tempnam関数は、一時ファイルの名前を作る関数です。アプリケーションで、一時的に利用して、不要になったらすぐ削除される運命にあります。万一、既存のファイルに上書きしてしまっては大変なので、この関数を利用してファイル名を作成するのが安全ですね。
さて、_tempnam関数のセキュリティ強化バージョンが_tempnam_s関数です。VS2005以降でないと使えません。
errno_t tmpnam_s( char * str, size_t sizeInChars );stdio.hをインクルードしておく必要があります。
strは、生成したファイル名を格納しておくバッファへのポインタです。
sizeInCharsには、バッファサイズを指定しておきます。
なお、生成されるファイル名の先頭には「\」が付加されます。
/* tmpname01.c */
#include <stdio.h>
int main()
{
char szFName[10];
int i;
for (i = 0; i < 10; i++) {
tmpnam_s(szFName, sizeof(szFName));
printf("%s\n", szFName);
}
return 0;
}
10個ほどファイル名を作成するプログラムです。生成される名前のファイルは、このプログラムのディレクトリには存在しない名前です。 プログラムを実行するたびに、異なるファイル名を生成します。
実行結果は次のような感じになります。
\s50k. \s50k.1 \s50k.2 \s50k.3 \s50k.4 \s50k.5 \s50k.6 \s50k.7 \s50k.8 \s50k.9また、ファイル名ではなく、実際に一時ファイルを作成する関数もあります。 いろいろ調べてみてください。
Update May/04/2008 By Y.Kumei