アプリケーションで、一時的に利用して、不要になったらすぐ削除される運命にあります。万一、既存のファイルに上書きしてしまっては大変なので、この関数を利用してファイル名を作成するのが安全ですね。
さて、_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