tmpnam_s, _wtmpnam_s
임시 파일을 생성하기 위해 이름을 사용할 수 있습니다. CRT의 보안 기능 에 설명된 대로 보안 향상 기능이 포함된 tmpnam and _wtmpnam 버전입니다.
errno_t tmpnam_s(
char * str,
size_t sizeInChars
);
errno_t _wtmpnam_s(
wchar_t *str,
size_t sizeInChars
);
template <size_t size>
errno_t tmpnam_s(
char (&str)[size]
); // C++ only
template <size_t size>
errno_t _wtmpnam_s(
wchar_t (&str)[size]
); // C++ only
매개 변수
[out] str
생성된 이름을 보유 하는 포인터입니다.[in] sizeInChars
버퍼의 크기(문자) 입니다.
반환 값
이러한 함수는 성공시 0 을, 실패시 오류 번호를 반환 합니다.
오류 조건
str |
sizeInChars |
반환 값 |
str의 내용입니다. |
NULL |
any |
EINVAL |
수정 안 됨 |
NULL 값이 아님(유효한 메모리를 가리킴) |
너무 짧음 |
ERANGE |
수정 안 됨 |
str이 NULL인 경우 매개 변수 유효성 검사에 설명된 대로 잘못된 매개 변수가 호출됩니다. 계속해서 실행하도록 허용된 경우, 이러한 함수는 errno 를 EINVAL 로 설정하고 EINVAL을 반환합니다.
설명
이러한 함수의 각각은 현재 존재하지 않는 파일의 이름을 반환합니다. tmpnam_s 현재 작업 디렉터리에서의 고유 이름을 반환합니다. 파일 이름이 \fname21와 같이 백슬래시와 경로 정보가 없이 미리 추가되면 이것은 이름이 현재 작업 디렉토리에 대해 유효함을 나타냅니다.
tmpnam_s 에 대해, 생성된 파일이름을 str 에 저장할 수 있습니다. tmpnam_s 에 의해 반환 되는 문자열의 최대 길이는 STDIO.H 에 정의된 대로 L_tmpnam_s 입니다. str 가 NULL 인 경우, tmpnam_s 는 내부 정적 버퍼에 결과를 유지합니다. 따라서 이후의 모든 호출은 값을 파괴 됩니다. tmpnam_s 가 생성한 이름은 tmpnam_s 에 대한 첫 번째 호출 후 생성된 프로그램 파일 이름과 기본 32에 있는 일련 번호의 파일 확장자로 구성됩니다. (.1-.vvvvvu, when TMP_MAX_S in STDIO.H is INT_MAX)
tmpnam_s 는 자동적으로 멀티 바이트 문자 문자열 인수를 운영 체제에서 얻어지는 OEM 코드 페이지에 따라 멀티 바이트 문자 문자열 시퀀스를 알아보며 적절하게 처리합니다. _wtmpnam_s 는 tmpnam_s 의 와이드 문자 버전입니다. _wtmpnam_s 인수와 반환 값은 와이드 문자 문자열입니다. _wtmpnam_s 와 tmpnam_s 은 _wtmpnam_s 가 멀티 바이트 문자의 문자열을 처리하지 않는 것을 제외하고 동일하게 작동합니다.
C++에서는 이러한 함수를 사용하는 것은 템플릿 오버로드에 의해 단순화됩니다; 오버로드는 자동으로 버퍼의 길이를 추정할수 있고, 크기 인수를 지정할 필요를 없앱니다. 자세한 내용은 안전한 템플릿 오버로드을 참조하십시오.
제네릭 텍스트 라우팅 매핑
TCHAR.H 루틴 |
_UNICODE &및 _MBCS 정의되지 않음 |
_MBCS 정의됨 |
_UNICODE 정의됨 |
---|---|---|---|
_ttmpnam_s |
tmpnam_s |
tmpnam_s |
_wtmpnam_s |
요구 사항
루틴 |
필수 헤더 |
---|---|
tmpnam_s |
<stdio.h> |
_wtmpnam_s |
<stdio.h> 또는 <wchar.h> |
호환성에 대한 자세한 내용은 소개 단원의 호환성 부분을 참조하십시오.
예제
// crt_tmpnam_s.c
// This program uses tmpnam_s to create a unique filename in the
// current working directory.
//
#include <stdio.h>
#include <stdlib.h>
int main( void )
{
char name1[L_tmpnam_s];
errno_t err;
int i;
for (i = 0; i < 15; i++)
{
err = tmpnam_s( name1, L_tmpnam_s );
if (err)
{
printf("Error occurred creating unique filename.\n");
exit(1);
}
else
{
printf( "%s is safe to use as a temporary file.\n", name1 );
}
}
}
해당 .NET Framework 항목
해당 사항 없음. 표준 C 함수를 호출하려면 PInvoke를 사용합니다. 자세한 내용은 플랫폼 호출 예제를 참조하십시오.