_tempnam, _wtempnam, tmpnam, _wtmpnam

임시 파일을 만들 수 있습니다 이름을 생성 합니다.보다 안전한 버전의 이러한 함수 중 일부를 사용할 수 있습니다. see 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
    전 보류 된 이름으로 반환 되는 문자열 _tempnam.

  • dir
    TMP 환경 변수 또는 TMP 디렉터리를 사용할 수 없습니다 하는 경우 파일 이름에 사용 되는 경로입니다.

  • str
    포인터를 기본 이름 저장 하며,이 함수에서 반환 된 이름에 동일 하 게 됩니다.이 생성 된 이름을 저장 하는 편리한 방법입니다.

반환 값

이러한 각 함수 생성 된 이름에 대 한 포인터를 반환 또는 NULL 오류가 있으면 됩니다.실패 하면 시도 하는 경우 발생할 수 있습니다 이상 TMP_MAX (STDIO을 참조 하십시오.H) 호출으로 tmpnam 또는 사용 하는 경우 _tempnam및 TMP 환경 변수에서에서 지정한 디렉터리 이름이 잘못 되어 있는 dir 매개 변수.

[!참고]

반환 된 포인터 tmpnam 및 _wtmpnam 내부 정적 버퍼에 가리킵니다.사용할 수 있는 포인터 할당을 호출할 수 없습니다.free에 대 한 할당 포인터 호출 해야 _tempnam 및 _wtempnam.

설명

이러한 각 함수는 현재 존재 하지 않는 파일의 이름을 반환 합니다.tmpnam현재 작업 디렉터리에서 고유 이름을 반환 하 고 _tempnam 현재가 아닌 다른 디렉터리에 고유한 이름을 생성 하는 수 있습니다.파일 이름에 백슬래시 및 경로 정보, \fname21, 등 전 보류 된 때이 이름은 현재 작업 디렉터리에 대 한 잘못입니다 것을 참고.

에 대 한 tmpnam,이 생성 된 파일 이름으로 저장할 수 있습니다 str.경우 str 입니다 NULL, 다음 tmpnam 결과 내부 정적 버퍼에 남겨 둡니다.따라서이 값 호출을 파괴 하십시오.생성 된 이름 tmpnam 의 프로그램에서 생성 된 파일 이름을 한 후 처음 호출할 때 구성 됩니다 tmpnam, 파일 확장명의 기본 32에 일련 번호 (.1-.vvu 때 TMP_MAX STDIO에.H는 32, 767입니다).

_tempnam다음 규칙에 따라 선택한 디렉터리에 고유한 파일 이름을 생성 합니다.

  • TMP 환경 변수가 정의 되 고 유효한 디렉터리 이름으로 설정 하는 경우 TMP에 의해 지정 된 디렉터리에 대 한 고유한 파일 이름이 생성 됩니다.

  • TMP 환경 변수가 정의 되지 않은 경우 또는 존재 하지 않는 디렉터리의 이름으로 설정 되어 있으면 _tempnam 사용 하 여 dir 매개 변수를이 생성 됩니다 고유 이름 경로와.

  • TMP 환경 변수가 정의 되지 않은 경우 또는 존재 하지 않는 디렉터리의 이름으로 설정 되어 있으면 한 경우 dir 하나는 NULL 또는 존재 하지 않는 디렉터리의 이름으로 설정 _tempnam 는 현재 작업 디렉터리 고유 이름을 생성 하려면 사용 합니다.현재 경우 두 TMP 및 dir 존재 하지 않는 디렉터리 이름을 지정은 _tempnam 함수 호출을 사용할 수 없습니다.

반환 되는 이름 _tempnam 의 연결 됩니다 prefix 및 일련 번호를 지정한 디렉터리에 고유한 파일 이름을 만들려면 결합 됩니다._tempnam없는 확장명을 가진 파일 이름을 생성 합니다._tempnam사용 하 여 malloc ; 파일 이름에 대 한 공간을 할당 하려면 프로그램은 더 이상 필요할 때이 공간을 확보에 대 한 책임이 없습니다.

_tempnam및 tmpnam 자동으로 운영 체제에서 얻은 핸들 멀티 바이트 문자 문자열 인수를 적절 하 게 OEM 코드 페이지에 따라 멀티 바이트 문자 시퀀스를 인식 합니다._wtempnam와이드 문자 버전입니다 _tempnam. 인수 및 반환 값이 _wtempnam 와이드 문자 문자열입니다._wtempnam및 _tempnam 동일 하 게 동작 _wtempnam 멀티 바이트 문자 문자열을 처리 하지 않습니다._wtmpnam와이드 문자 버전입니다 tmpnam. 인수와 반환 값을 _wtmpnam 와이드 문자 문자열입니다._wtmpnam및 tmpnam 동일 하 게 동작 _wtmpnam 멀티 바이트 문자 문자열을 처리 하지 않습니다.

경우 _DEBUG 및 _CRTDBG_MAP_ALLOC 정의 된 _tempnam 및 _wtempnam 에 대 한 호출에 의해 대체 됩니다 _tempnam_dbg 및 _wtempnam_dbg.

일반 텍스트 루틴 매핑

TCHAR입니다.H 루틴

_UNICODE 및 _Mbcs가 정의 되지 않았습니다.

_Mbcs가 정의

_Unicode가 정의

_ttmpnam

tmpnam

tmpnam

_wtmpnam

_ttempnam

_tempnam

_tempnam

_wtempnam

요구 사항

루틴

필수 헤더

_tempnam

<stdio.h>

_wtempnam, _wtmpnam

<stdio.h> 또는 <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. 자세한 내용은 플랫폼 호출 예제.

참고 항목

참조

스트림 I/O

_getmbcp

malloc

_setmbcp

tmpfile

tmpfile_s