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


_tempnam, _wtempnam, tmpnam, _wtmpnam

Создать имена можно использовать для создания временных файлов.Более безопасные версии некоторых из этих функций доступны; см. tmpnam_s, _wtmpnam_s.

char *_tempnam(
   const char *dir,
   const char *prefix 
);
wchar_t *_wtempnam(
   const wchar_t *dir,
   const wchar_t *prefix 
);
char *tmpnam(
   char *str 
);
wchar_t *_wtmpnam(
   wchar_t *str 
);

Параметры

  • prefix
    Строка, которая будет возвращена by, предваряемое именем к именам _tempnam.

  • dir
    Путь, используемый в имени файла, если ни одна переменная среды TMP, либо если TMP не является допустимым каталогом.

  • str
    Указатель, который будет храниться созданное имя будет таким же, как и к имени, возвращаемому функцией.Это удобный способ сохранения, сформированное имя.

Возвращаемое значение

Каждая из этих функций получает указатель на созданный имени или NULL если возникает сбой.Сбой может возникать при попытке более TMP_MAX (см. STDIO.H вызовы с). tmpnam или при использовании _tempnamнедопустимое имя каталога, указанное в переменной среды TMP и в dir параметр.

ПримечаниеПримечание

Указатели возвращаемые by tmpnam и _wtmpnam укажите статический на внутренние буферы.free не должны вызываться для отмены распределению эти указатели.free нужно вызывать для указателей выбранных by _tempnam и _wtempnam.

Заметки

Каждая из этих функций возвращает имя файла, который в настоящий момент не существует.tmpnam возвращает имя уникальным в рабочей папке и _tempnam позволяет создавать уникальное имя каталога, отличного от текущего.На заметку, чем при имя файла, предваряемое именем обратную косую черту и нет данными о пути, например \ fname21, показывает, что имя допустимым для текущей рабочей папки.

Для tmpnamможно хранить это созданное имя файла in str.If str существует NULLпосле этого tmpnam отображается результат во внутренний буфер является статическим.Таким образом, все последующие вызовы разрушают это значение.Имя, сформированное by tmpnam состоит из программа-произведенного имени файла и после первого вызова tmpnamрасширение файла последовательных чисел в основанию 32 (.1-.vvu, когда TMP_MAX в STDIO.H 32.767).

_tempnam создает уникальное имя файла для каталога, выбранного следующими правилами:

  • Если переменной среды TMP и устанавливается на допустимое имя каталога, то уникальные имена файлов будут формироваться для каталога указанного TMP.

  • Если переменной среды TMP не указана или если установлено значение имени каталога, который не существует, _tempnam использует dir параметр как путь, для которого он будет создавать уникальные имена.

  • Если переменной среды TMP не указана или если установлено значение имени каталога не существует, и если dir значение NULL или задайте имя каталога, который не существует _tempnam использует текущую рабочую папку, чтобы создавать уникальные имена.В данный момент, и TMP, если оба dir укажите имена каталогов, которые не существуют, _tempnam вызов функции завершится ошибкой.

Имя, возвращенное by _tempnam будет соединением prefix и последовательный номер, который совместит для создания уникального имени файла для указанного каталога._tempnam создает имена файлов, которые не имеют расширение._tempnam использует malloc выделить пространство для имени файла; программа отвечает за освобождение этого пространства, когда она больше не нужна.

_tempnam и tmpnam автоматическая обработка аргументы характерной черты, узнающ последовательности многобайтового символов в соответствии с кодовой страницей OEM, полученной от операционной системы._wtempnam версия расширенных символов _tempnam; аргументы и возвращаемое значение _wtempnam характерные черты._wtempnam и _tempnam поступайте идентичны за исключением того, что _wtempnam не обрабатывает характерные черты._wtmpnam версия расширенных символов tmpnam; аргумент и возвращаемое значение _wtmpnam характерные черты._wtmpnam и tmpnam поступайте идентичны за исключением того, что _wtmpnam не обрабатывает характерные черты.

If _DEBUG и _CRTDBG_MAP_ALLOC укажите, _tempnam и _wtempnam замените вызовах _tempnam_dbg и _wtempnam_dbg.

Сопоставления подпрограммы Родов-Текста

Подпрограмма TCHAR.H

_MBCS не заданные _UNICODE &

Указанный символ _MBCS

Указанный _UNICODE

_ttmpnam

tmpnam

tmpnam

_wtmpnam

_ttempnam

_tempnam

_tempnam

_wtempnam

Требования

Процедура

Обязательный заголовок

_tempnam

<stdio.h>

_wtempnam, _wtmpnam

<stdio.h> OR <wchar.h>

tmpnam

<stdio.h>

Дополнительные сведения о совместимости см. Совместимость во введении.

Пример

// crt_tempnam.c
// compile with: /W3
// This program uses tmpnam to create a unique filename in the
// current working directory, then uses _tempnam to create 
// a unique filename with a prefix of stq. 

#include <stdio.h>
#include <stdlib.h>

int main( void )
{   
   char* name1 = NULL;
   char* name2 = NULL;

   // Create a temporary filename for the current working directory: 
   if( ( name1 = tmpnam( NULL ) ) != NULL ) // C4996
   // Note: tmpnam is deprecated; consider using tmpnam_s instead
      printf( "%s is safe to use as a temporary file.\n", name1 );
   else
      printf( "Cannot create a unique filename\n" );

   // Create a temporary filename in temporary directory with the
   // prefix "stq". The actual destination directory may vary
   // depending on the state of the TMP environment variable and
   // the global variable P_tmpdir.   

   if( ( name2 = _tempnam( "c:\\tmp", "stq" ) ) != NULL )
      printf( "%s is safe to use as a temporary file.\n", name2 ); 
   else
      printf( "Cannot create a unique filename\n" );

   // When name2 is no longer needed :   
   if(name2)
     free(name2);
     
}
  
  
  

Эквивалент в .NET Framework

Неприменимо. Для c# используйте стандартная функция PInvoke. Дополнительные сведения см. в разделе Примеры вызовов неуправляемого кода.

См. также

Ссылки

Поток ВВОДА-ВЫВОДА

_getmbcp

malloc

_setmbcp

tmpfile

tmpfile_s