_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
_tempnam 가 반환하는 이름에 대해 미리 추가될 문자열입니다.dir
TMP 환경 변수가 없거나 TMP가 유효한 디렉터리가 아닌경우, 경로는 파일이름에서 사용됩니다.str
생성된 이름을 가지고 함수에 의해 반환되는 이름과 동일한 포인터입니다. 이것은 생성된 이름을 편리하게 저장합니다.
반환 값
실패한 경우, 이러한 함수의 각각은 생성되거나 NULL 인 이름에 대한 포인터를 반환합니다. tmpnam 를 사용하여 TMP_MAX 를(STDIO.H 를 참조하십시오) 더 호출하는 경우나 _tempnam 를 사용하는 경우 실패가 발생하고 TMP 환경 변수와 dir 매개 변수에서 지정하는 잘못된 디렉터리 이름이 됩니다.
참고
tmpnam 가 포인터를 반환하고 _wtmpnam 는 내부 정적 버퍼를 가르킵니다.free 는 이러한 포인터의 할당을 해제하기 위해 호출할 수 없습니다.free 는 _tempnam 및 _wtempnam 에 의해 할당된 포인터에대해 호출되어야 합니다.
설명
이러한 함수의 각각은 현재 존재하지 않는 파일의 이름을 반환합니다. tmpnam 는 현재 작업 디렉토리에서 고유 이름을 반환하고 _tempnam 는 현재 디렉터리외에서 고유 이름을 생성하게 합니다. 파일 이름이 \fname21와 같이 백슬래시와 경로 정보가 없이 미리 추가되면 이것은 이름이 현재 작업 디렉토리에 대해 유효함을 나타냅니다.
tmpnam 에 대해, 생성된 파일이름을 str 에 저장할 수 있습니다. str 가 NULL 인 경우, tmpnam 는 내부 정적 버퍼에 결과를 유지합니다. 따라서 이후의 모든 호출은 값을 파괴 됩니다. tmpnam 가 생성한 이름은 tmpnam 에 대한 첫 번째 호출 후 생성된 프로그램 파일 이름과 기본 32에 있는 일련 번호의 파일 확장자로 구성됩니다. (.1-.vvu, when TMP_MAX in STDIO.H is 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 and _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를 사용합니다. 자세한 내용은 플랫폼 호출 예제를 참조하십시오.