tmpfile_s

一時ファイルを作成します。 これは、「CRT のセキュリティ機能」の説明にあるとおり、セキュリティが強化されたバージョンの tmpfile です。

構文

errno_t tmpfile_s(
   FILE** pFilePtr
);

パラメーター

pFilePtr
ストリームに生成されたポインターのアドレスを格納するポインターのアドレスです。

戻り値

正常終了した場合は 0 を返します。失敗した場合はエラー コードを返します。

エラー条件

pFilePtr 戻り値 Pfileptr の内容
NULL EINVAL 変更されない

上記のパラメーターの検証エラーが発生した場合は、「パラメーターの検証」に説明されているとおり、無効なパラメーター ハンドラーが呼び出されます。 実行の継続が許可された場合、 errnoeinval に設定され、戻り値は einval になります。

解説

Tmpfile_s 関数は、一時ファイルを作成し、そのストリームへのポインターを pfileptr 引数に格納します。 一時ファイルはルート ディレクトリに作成されます。 ルート ディレクトリ以外のディレクトリに一時ファイルを作成するには、tmpnam_s または tempnamfopen と共に使用します。

ファイルを開くことができない場合、 tmpfile_spfileptr パラメーターに NULL を書き込みます。 この一時ファイルは、ファイルが閉じられたとき、プログラムが正常に終了したとき、または _rmtmp が呼び出されたときに、現在の作業ディレクトリが変更されていないという前提で自動的に削除されます。 一時ファイルは、 w + b (バイナリ読み取り/書き込み) モードで開かれます。

TMP_MAX_S を超えて試行した場合、エラーが発生することがあります (「STDIO」を参照してください)。H) tmpfile_s を使用してを呼び出します。

既定では、この関数のグローバル状態はアプリケーションにスコープが設定されています。 これを変更するには、「 CRT でのグローバル状態」を参照してください。

必要条件

ルーチンによって返される値 必須ヘッダー
tmpfile_s <stdio.h>

互換性の詳細については、「互換性」を参照してください。

注意

この例では、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" );
      else
         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

関連項目

ストリーム入出力
_rmtmp
_tempnam、_wtempnam、tmpnam、_wtmpnam