tmpfile_s
一時ファイルを作成します。これは CRT のセキュリティ機能 に説明されているようにのセキュリティが強化された tmpfile のバージョンです。
errno_t tmpfile_s(
FILE** pFilePtr
);
パラメーター
- [出力] pFilePtr
ストリームへの生成ポインターのアドレスを格納するポインターのアドレス。
戻り値
正常終了した場合は 0 を返します。失敗した場合はエラー コードを返します。
エラー条件
pFilePtr |
戻り値 |
の内容 pFilePtr |
---|---|---|
NULL |
EINVAL |
変更されない |
上記のパラメーター検証エラーが発生すると、「パラメーターの検証」に説明されているように、無効なパラメーター ハンドラーが呼び出されます。実行の継続が許可された場合、errno が EINVAL に設定され、戻り値はEINVAL となります。
解説
tmpfile_s 関数は一時ファイルを作成し、そのストリームへのポインターを pFilePtr 引数に格納します。一時ファイルは、ルート ディレクトリに作成されます。ルート ディレクトリ以外に一時ファイルを作成するにはfopen とともに tmpnam_s または tempnam を使用します。
ファイルを開けない場合、tmpfile_s 関数は NULL を pFilePtr パラメーターに書き込みます。この一時ファイルは、ファイルが閉じられたとき、プログラムが正常に終了したとき、または _rmtmp が呼び出されたときに、自動的に削除されます。これは、現在の作業ディレクトリが変更されていないことを前提とします。一時ファイルは w+b (バイナリ読み書き両用) モードで開かれます。
tmpfile_s. で TMP_MAX_S (STDIO.H を参照) よりも多く呼び出しを試行した場合は、エラーが発生することがあります。
必要条件
ルーチン |
必須ヘッダー |
---|---|
tmpfile_s |
<stdio.h> |
互換性の詳細については、「C ランタイム ライブラリ」の「互換性」を参照してください。
使用例
[!メモ]
この例を Windows Vista で実行するには管理特権が必要です。
// 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() );
}
同等の .NET Framework 関数
該当なし標準 C 関数を呼び出すには、PInvoke を使用します。詳細については、「プラットフォーム呼び出しの例」を参照してください。