Share via


tmpfile_s

更新 : 2007 年 11 月

一時ファイルを作成します。この関数は、「CRT のセキュリティ強化」に説明されているように、tmpfile のセキュリティが強化されたバージョンです。

errno_t tmpfile(
   FILE** pFilePtr
);

パラメータ

  • [出力] pFilePtr
    ストリームへの生成ポインタのアドレスを格納するポインタのアドレス。

戻り値

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

エラー条件

pFilePtr

戻り値

内容:pFilePtr

NULL

EINVAL

変更されない

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

解説

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

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

tmpfile_s. で TMP_MAX_S (STDIO.H を参照) よりも多く呼び出しを試行した場合は、エラーが発生することがあります。

必要条件

ルーチン

必須ヘッダー

tmpfile_s

<stdio.h>

互換性の詳細については、「C ランタイム ライブラリ」の「互換性」を参照してください。

使用例

b3dz6009.alert_note(ja-jp,VS.90).gifメモ :

この例を Windows Vista で実行するには管理者特権が必要です。

// crt_tmpfile_s.c
// This program uses tmpfile 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

.NET Framework の相当するアイテム

適用できません。標準 C 関数を呼び出すには、PInvoke を使用します。詳細については、「プラットフォーム呼び出しの例」を参照してください。

参照

参照

ストリーム入出力

_rmtmp

_tempnam、_wtempnam、tmpnam、_wtmpnam