Поделиться через


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, , _wtempnamtmpnam_wtmpnam