_tempnam, _wtempnam

提供: RAD Studio
移動先: 案内検索

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

+