一時ファイルを作成します。Creates a temporary file. これは、「CRT のセキュリティ機能」の説明にあるとおり、セキュリティが強化されたバージョンの tmpfile です。It is a version of tmpfile with security enhancements as described in Security Features in the CRT.


errno_t tmpfile_s(
   FILE** pFilePtr


ストリームに生成されたポインターのアドレスを格納するポインターのアドレスです。The address of a pointer to store the address of the generated pointer to a stream.

戻り値Return Value

正常終了した場合は 0 を返します。失敗した場合はエラー コードを返します。Returns 0 if successful, an error code on failure.

エラー条件Error Conditions

pFilePtrpFilePtr 戻り値Return Value Pfileptr の内容 Contents of pFilePtr
空白NULL EINVALEINVAL 変更されないnot changed

上記のパラメーターの検証エラーが発生した場合は、「パラメーターの検証」に説明されているとおり、無効なパラメーター ハンドラーが呼び出されます。If the above parameter validation error occurs, the invalid parameter handler is invoked, as described in Parameter Validation. 実行の継続が許可された場合、 errnoeinvalに設定され、戻り値はeinvalになります。If execution is allowed to continue, errno is set to EINVAL and the return value is EINVAL.


Tmpfile_s関数は、一時ファイルを作成し、そのストリームへのポインターをpfileptr引数に格納します。The tmpfile_s function creates a temporary file and puts a pointer to that stream in the pFilePtr argument. 一時ファイルはルート ディレクトリに作成されます。The temporary file is created in the root directory. ルート ディレクトリ以外のディレクトリに一時ファイルを作成するには、tmpnam_s または tempnamfopen と共に使用します。To create a temporary file in a directory other than the root, use tmpnam_s or tempnam in conjunction with fopen.

ファイルを開くことができない場合、 tmpfile_spfileptrパラメーターにNULLを書き込みます。If the file cannot be opened, tmpfile_s writes NULL to the pFilePtr parameter. この一時ファイルは、ファイルが閉じられたとき、プログラムが正常に終了したとき、または _rmtmpが呼び出されたときに、現在の作業ディレクトリが変更されていないという前提で自動的に削除されます。This temporary file is automatically deleted when the file is closed, when the program terminates normally, or when _rmtmp is called, assuming that the current working directory does not change. 一時ファイルは、 w + b (バイナリ読み取り/書き込み) モードで開かれます。The temporary file is opened in w+b (binary read/write) mode.

TMP_MAX_Sを超えて試行した場合、エラーが発生することがあります (「STDIO」を参照してください)。H) tmpfile_sを使用してを呼び出します。Failure can occur if you attempt more than TMP_MAX_S (see STDIO.H) calls with tmpfile_s.

既定では、この関数のグローバル状態はアプリケーションにスコープが設定されています。By default, this function's global state is scoped to the application. これを変更するには、「 CRT でのグローバル状態」を参照してください。To change this, see Global state in the CRT.


ルーチンRoutine 必須ヘッダーRequired header
tmpfile_stmpfile_s <stdio.h><stdio.h>

互換性の詳細については、「互換性」を参照してください。For additional compatibility information, see Compatibility.



この例では、Windows で実行するために管理者特権が必要になる場合があります。This example may require administrative privileges to run on Windows.

// crt_tmpfile_s.c
// This program uses tmpfile_s to create a
// temporary file, then deletes this file with _rmtmp.

#include <stdio.h>

int main( void )
   FILE *stream;
   char tempstring[] = "String to be written";
   int  i;
   errno_t err;

   // Create temporary files.
   for( i = 1; i <= 3; i++ )
      err = tmpfile_s(&stream);
      if( err )
         perror( "Could not open new temporary file\n" );
         printf( "Temporary file %d was created\n", i );

   // Remove temporary files.
   printf( "%d temporary files deleted\n", _rmtmp() );
Temporary file 1 was created
Temporary file 2 was created
Temporary file 3 was created
3 temporary files deleted

関連項目See also

ストリーム入出力Stream I/O
_tempnam、_wtempnam、tmpnam、_wtmpnam_tempnam, _wtempnam, tmpnam, _wtmpnam