第144章 tmpnam関数のセキュリティ強化版


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
また、ファイル名ではなく、実際に一時ファイルを作成する関数もあります。 いろいろ調べてみてください。
[Index][総合Index] [Previous Chapter]

Update May/04/2008 By Y.Kumei
当ホーム・ページの一部または全部を無断で複写、複製、 転載あるいはコンピュータ等のファイルに保存することを禁じます。