_tempnam, _wtempnam
stdio.h:インデックス への移動
ヘッダーファイル
stdio.h
カテゴリ
入出力ルーチン
プロトタイプ
char *_tempnam(char *dir, char *prefix)
wchar_t *_wtempnam(wchar_t *dir, wchar_t *prefix)
説明
指定されたディレクトリに一意のファイル名を作成します。
_tempnam 関数は,シングルバイトまたはマルチバイトの文字列引数を受け取ります。
_tempnam 関数は,任意のディレクトリに一意のファイル名を作成します。この一意のファイルは実際には作成されません。_tempnam は,そのようなファイルが存在しないことを確認するだけです。ファイル名を作成するときに,次の順番でディレクトリを使用します。
- TMP 環境変数で指定されたディレクトリ
- _tempnam の dir 引数
- stdio.h 内の P_tmpdir 定義。stdio.h を編集してこの定義を変更した場合,_tempnam は新しい定義を使用しません。
- 現在の作業ディレクトリ。
これらのディレクトリが NULL,未定義,または存在しない場合,そのディレクトリはスキップされます。
prefix 引数は,ファイル名の先頭部分を 5 文字以下で指定します。ピリオド(.)は使用できません。一意のファイル名は,ディレクトリ名,プレフィクス,および一意の 6 つの文字を連結して作成されます。作成されるファイル名のためのスペースは,malloc を使って割り当てられます。このファイル名が不要になった場合は,呼び出し側が free を呼び出して解放する必要があります。
_tempnam が作成した名前を使って一時ファイルを作成した場合は,自分でファイル名を削除する(たとえば,remove を呼び出す)必要があります。ファイル名は自動的に削除されません。tmpfile はファイル名を削除します。
戻り値
成功した場合,_tempnam は,一意の一時ファイル名を指すポインタを返します。呼び出し側は,不要になったポインタを free に渡すことができます。一意のファイル名を作成できない場合は,NULL を返します。
例
#include <stdio.h>
#include <stdlib.h>
void main(void)
{
FILE *stream;
int i;
char *name;
for (i = 1; i <= 10; i++) {
if ((name = tempnam("\\tmp","wow")) == NULL)
perror("tempnam couldn't create name");
else {
printf("Creating %s\n",name);
if ((stream = fopen(name,"wb")) == NULL)
perror("Could not open temporary file\n");
else
fclose(stream);
}
free(name);
}
printf("Warning: temp files not deleted.\n");
}
移植性
POSIX | Win32 | ANSI C | ANSI C++ | |
---|---|---|---|---|
_tempnam |
+ |
|||
_wtempnam |
+ |