tmpfile_s
Создает временный файл. Это версия tmpfile
с улучшениями безопасности, как описано в функциях безопасности в CRT.
Синтаксис
errno_t tmpfile_s(
FILE** pFilePtr
);
Параметры
pFilePtr
Адрес указателя для хранения адреса созданного указателя на поток.
Возвращаемое значение
Возвращает 0 в случае успеха или код ошибки в случае неудачи.
Условия ошибок
pFilePtr |
Возвращаемое значение | Содержимое pFilePtr |
---|---|---|
NULL |
EINVAL |
не изменено |
Если возникает ошибка проверки выше параметров, вызывается обработчик недопустимых параметров, как описано в разделе "Проверка параметров". Если выполнение разрешено продолжать, errno
задано EINVAL
значение , а возвращаемое значение равно EINVAL
.
Замечания
Функция tmpfile_s
создает временный файл и помещает указатель на этот поток в аргумент pFilePtr
. Временный файл создается в корневом каталоге. Чтобы создать временный файл в каталоге, отличном от корневого, используйте tmpnam_s
или tempnam
с fopen
.
Если файл не удается открыть, tmpfile_s
записывается NULL
в pFilePtr
параметр. Этот временный файл автоматически удаляется при закрытии файла, когда программа завершается нормально или когда _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