tmpnam_s, _wtmpnam_stmpnam_s, _wtmpnam_s

임시 파일을 만드는 데 사용할 수 있는 이름을 생성합니다.Generate names you can use to create temporary files. 이러한 함수는 CRT의 보안 기능에 설명된 대로 강화된 보안 기능이 있는 tmpnam 및 _wtmpnam의 버전입니다.These are versions of tmpnam and _wtmpnam with security enhancements as described in Security Features in the CRT.

구문Syntax

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

매개 변수Parameters

strstr
생성된 이름이 저장되는 포인터입니다.Pointer that will hold the generated name.

sizeInCharssizeInChars
버퍼의 크기(문자)입니다.The size of the buffer in characters.

반환 값Return Value

이 두 함수는 정상적으로 실행되면 0을 반환하고 오류 시에는 오류 번호를 반환합니다.Both of these functions return 0 if successful or an error number on failure.

오류 조건Error Conditions

strstr sizeInCharssizeInChars 반환 값Return Value *내용의***str Contents of str
NULLNULL anyany EINVALEINVAL 수정 안 됨not modified
되지 NULL (유효한 메모리를 가리킴)not NULL (points to valid memory) 너무 짧음too short ERANGEERANGE 수정 안 됨not modified

하는 경우 str 됩니다 NULL에 설명 된 대로 잘못 된 매개 변수 처리기가 호출 매개 변수 유효성 검사합니다.If str is NULL, the invalid parameter handler is invoked, as described in Parameter Validation. 실행은 계속 하도록 허용 하는 경우 이러한 함수 설정 errnoEINVAL 돌아와 EINVAL합니다.If execution is allowed to continue, these functions set errno to EINVAL and return EINVAL.

설명Remarks

이러한 각 함수는 현재 없는 파일의 이름을 반환합니다.Each of these functions returns the name of a file that does not currently exist. tmpnam_s 반환한 지정 된 Windows 임시 디렉터리에 고유 이름을 반환 GetTempPathW합니다.tmpnam_s returns a name unique in the designated Windows temporary directory returned by GetTempPathW. \fname21과 같이 파일 이름 앞에 백슬래시가 붙고 경로 정보는 없는 경우 현재 작업 디렉터리에 대해 해당 이름이 유효함을 나타냅니다.Note than when a file name is pre-pended with a backslash and no path information, such as \fname21, this indicates that the name is valid for the current working directory.

에 대 한 tmpnam_s,이 생성 된 파일 이름에 저장할 수 있습니다 str합니다.For tmpnam_s, you can store this generated file name in str. 반환 된 문자열의 최대 길이 tmpnam_s 됩니다 L_tmpnam_sSTDIO에 정의 된 합니다. 8.The maximum length of a string returned by tmpnam_s is L_tmpnam_s, defined in STDIO.H. 경우 str 됩니다 NULL, 한 다음 tmpnam_s 결과 내부 정적 버퍼에 유지 합니다.If str is NULL, then tmpnam_s leaves the result in an internal static buffer. 따라서 모든 후속 호출에서는 이 값을 제거합니다.Thus any subsequent calls destroy this value. 생성 된 이름을 tmpnam_s 으로 구성 됩니다 프로그램에서 생성 된 파일 이름의 첫 번째 호출 후 tmpnam_s, 순차적 숫자의 파일 확장명 (이름은.1-.1vvvvvu 경우 TMP _MAX_S STDIO에서. H 됩니다 INT_MAX).The name generated by tmpnam_s consists of a program-generated file name and, after the first call to tmpnam_s, a file extension of sequential numbers in base 32 (.1-.1vvvvvu, when TMP_MAX_S in STDIO.H is INT_MAX).

tmpnam_s 멀티 바이트 문자열 인수를 적절 하 게 처리 OEM 코드 페이지에 따라 멀티 바이트 문자 시퀀스를 인식 운영 체제에서 자동으로 부여 합니다.tmpnam_s automatically handles multibyte-character string arguments as appropriate, recognizing multibyte-character sequences according to the OEM code page obtained from the operating system. _wtmpnam_s 의 와이드 문자 버전이 tmpnam_s;의 인수와 반환 값 _wtmpnam_s 는 와이드 문자 문자열입니다._wtmpnam_s is a wide-character version of tmpnam_s; the argument and return value of _wtmpnam_s are wide-character strings. _wtmpnam_s 하 고 tmpnam_s 점을 제외 하면 동일 하 게 작동 _wtmpnam_s 멀티 바이트 문자열을 처리 하지 않습니다._wtmpnam_s and tmpnam_s behave identically except that _wtmpnam_s does not handle multibyte-character strings.

C++에서는 템플릿 오버로드를 통해 이러한 함수를 사용하는 것이 더욱 간단해집니다. 오버로드는 버퍼 길이를 자동으로 유추할 수 있으므로 크기 인수를 지정할 필요가 없습니다.In C++, using these functions is simplified by template overloads; the overloads can infer buffer length automatically, eliminating the need to specify a size argument. 자세한 내용은 Secure Template Overloads을 참조하세요.For more information, see Secure Template Overloads.

제네릭 텍스트 루틴 매핑Generic-Text Routine Mappings

TCHAR.H 루틴TCHAR.H routine _UNICODE 및 _MBCS 정의되지 않음_UNICODE & _MBCS not defined _MBCS 정의됨_MBCS defined _UNICODE 정의됨_UNICODE defined
_ttmpnam_s_ttmpnam_s tmpnam_stmpnam_s tmpnam_stmpnam_s _wtmpnam_s_wtmpnam_s

요구 사항Requirements

루틴에서 반환된 값Routine 필수 헤더Required header
tmpnam_stmpnam_s <stdio.h><stdio.h>
_wtmpnam_s_wtmpnam_s <stdio.h> 또는 <wchar.h><stdio.h> or <wchar.h>

호환성에 대한 자세한 내용은 호환성을 참조하세요.For additional compatibility information, see Compatibility.

예제Example

// 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 );
      }
   }
}
C:\Users\LocalUser\AppData\Local\Temp\u19q8.0 is safe to use as a temporary file.
C:\Users\LocalUser\AppData\Local\Temp\u19q8.1 is safe to use as a temporary file.
C:\Users\LocalUser\AppData\Local\Temp\u19q8.2 is safe to use as a temporary file.
C:\Users\LocalUser\AppData\Local\Temp\u19q8.3 is safe to use as a temporary file.
C:\Users\LocalUser\AppData\Local\Temp\u19q8.4 is safe to use as a temporary file.
C:\Users\LocalUser\AppData\Local\Temp\u19q8.5 is safe to use as a temporary file.
C:\Users\LocalUser\AppData\Local\Temp\u19q8.6 is safe to use as a temporary file.
C:\Users\LocalUser\AppData\Local\Temp\u19q8.7 is safe to use as a temporary file.
C:\Users\LocalUser\AppData\Local\Temp\u19q8.8 is safe to use as a temporary file.
C:\Users\LocalUser\AppData\Local\Temp\u19q8.9 is safe to use as a temporary file.
C:\Users\LocalUser\AppData\Local\Temp\u19q8.a is safe to use as a temporary file.
C:\Users\LocalUser\AppData\Local\Temp\u19q8.b is safe to use as a temporary file.
C:\Users\LocalUser\AppData\Local\Temp\u19q8.c is safe to use as a temporary file.
C:\Users\LocalUser\AppData\Local\Temp\u19q8.d is safe to use as a temporary file.
C:\Users\LocalUser\AppData\Local\Temp\u19q8.e is safe to use as a temporary file.

참고자료See also

스트림 I/OStream I/O
_getmbcp_getmbcp
mallocmalloc
_setmbcp_setmbcp
tmpfile_stmpfile_s