tmpfile_s
Creates a temporary file. It's a version of tmpfile
with security enhancements as described in Security features in the CRT.
Syntax
errno_t tmpfile_s(
FILE** pFilePtr
);
Parameters
pFilePtr
The address of a pointer to store the address of the generated pointer to a stream.
Return value
Returns 0 if successful, an error code on failure.
Error conditions
pFilePtr |
Return value | Contents of pFilePtr |
---|---|---|
NULL |
EINVAL |
not changed |
If the above parameter validation error occurs, the invalid parameter handler is invoked, as described in Parameter validation. If execution is allowed to continue, errno
is set to EINVAL
, and the return value is EINVAL
.
Remarks
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. To create a temporary file in a directory other than the root, use tmpnam_s
or tempnam
with fopen
.
If the file can't be opened, tmpfile_s
writes NULL
to the pFilePtr
parameter. 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 doesn't change. The temporary file is opened in w+b (binary read/write) mode.
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. To change this behavior, see Global state in the CRT.
Requirements
Routine | Required header |
---|---|
tmpfile_s |
<stdio.h> |
For more compatibility information, see Compatibility.
Example
Note
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" );
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