다음을 통해 공유


_mktemp_s, _wmktemp_s

고유한 파일 이름을 생성 합니다.이러한 버전의 있습니다 _mktemp, _wmktemp 와 보안 기능 향상에 설명 된 대로 CRT의 보안 기능.

errno_t _mktemp_s(
   char *template,
   size_t sizeInChars
);
errno_t _wmktemp_s(
   wchar_t *template,
   size_t sizeInChars
);
template <size_t size>
errno_t _mktemp_s(
   char (&template)[size]
); // C++ only
template <size_t size>
errno_t _wmktemp_s(
   wchar_t (&template)[size]
); // C++ only

매개 변수

  • template
    파일 이름 패턴입니다.

  • sizeInChars
    싱글 바이트 문자에 버퍼 크기를 _mktemp_s. 와이드 문자를 _wmktemp_s를 null 종결자를 포함 하 여.

반환 값

이러한 함수를 성공한 경우 0을 반환합니다. 실패 시 오류 코드입니다.

오류 조건

template

sizeInChars

값을 반환 합니다.

서식 파일에서 새 값

NULL

모든

EINVAL

NULL

잘못 된 형식 (참조 하십시오 Remarks 올바른 형식에 대 한 섹션)

모든

EINVAL

빈 문자열

모든

< = X

EINVAL

빈 문자열

위의 오류 조건이 발생 하는 경우 잘못 된 매개 변수 처리기를의 설명에 따라 호출 됩니다 매개 변수 유효성 검사.실행을 계속 수 있으면 errno 으로 설정 EINVAL 함수를 반환 하 고 EINVAL.

설명

_mktemp_s 함수를 수정 하 여 고유한 파일 이름을 만듭니다는 template 인수를 있도록 호출, 후는 template 새 파일 이름이 포함 된 문자열을 가리킵니다._mktemp_s런타임 시스템에서 인식 하는 멀티 바이트 문자 시퀀스는 현재 사용 중인 멀티 바이트 코드 페이지에 따라 멀티 바이트 문자 문자열 인수를 적절 하 게 자동으로 처리 합니다._wmktemp_s와이드 문자 버전입니다 _mktemp_s. 인수를 _wmktemp_s 와이드 문자 문자열입니다._wmktemp_s및 _mktemp_s 동일 그렇지 않은 경우를 제외 하 고는 게 동작 _wmktemp_s 멀티 바이트 문자 문자열을 처리 하지 않습니다.

일반 텍스트 루틴 매핑

Tchar.h 루틴

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

_Mbcs가 정의

_Unicode가 정의

_tmktemp_s

_mktemp_s

_mktemp_s

_wmktemp_s

template 인수가 있는 폼 baseXXXXXX, 어디 base 일부인 새 파일 이름을 입력 하 고 각 X에서 제공 하는 문자 자리 표시자입니다 _mktemp_s.각 자리 표시자 문자를 template X 대문자 여야 합니다._mktemp_s보존 base 와 영문자로 뒤에 오는 첫 번째 X를 대체 합니다._mktemp_s다음 뒤 바꾸는 X는 다섯 자리 값을 합니다. 이 값은 호출 프로세스에서 또는 다중 스레드 프로그램에서 호출 하는 스레드를 식별 하는 고유 번호입니다.

각 성공적으로 호출 하려면 _mktemp_s 수정 template.각 후속 호출에서 동일한 프로세스 또는 스레드가 동일한 template 인수를 _mktemp_s 에서 반환 하는 이름이 일치 하는 파일 이름에 대 한 검사 _mktemp_s 에 대 한 이전 호출.주어진 이름에 대 한 파일이 존재 하는 경우 _mktemp_s 해당 이름을 반환 합니다.이전에 반환 된 모든 이름에 대 한 파일이 있는 경우 _mktemp_s 사용 다음 사용 가능한 소문자로 'a'부터 순서 대로 이전에 반환 된 이름에 'z'의 알파벳 문자를 대체 하 여 새 이름을 만듭니다.예를 들어, 경우 base 입니다.

fn

고가 제공 하는 다섯 자리의 값 _mktemp_s 12345, 이름이 반환 됩니다.

fna12345

이 이름은 FNA12345 파일을 만드는 데 사용 되 고이, 같은 프로세스 또는 스레드가 동일한 호출에서 다음 이름을 반환 파일이 base 에 대 한 template 입니다.

fnb12345

FNA12345 존재 하지 않는 경우에 다시 반환 된 다음 이름이입니다.

fna12345

_mktemp_s26 고유한 파일 이름이 주어진된 자료 및 템플릿 값 조합에 대 한 최대를 만들 수 있습니다.따라서 fnz12345는 고유한 파일 이름입니다 _mktemp_s 를 만들 수 있습니다의 base 및 template 이 예제에 사용 되는 값입니다.

C + +에서이 함수를 사용 하 여 템플릿 오버 로드에 단순화 됩니다. 오버 로드에서 버퍼 길이가 자동으로 유추할 수 있습니다 (size 인수를 지정할 필요가 없습니다) 및 해당 보안에서 이미지와 이전, 안전 하지 않은 함수가 자동으로 바꿀 수 있습니다.자세한 내용은 보안 템플릿 오버 로드를 참조하십시오.

요구 사항

루틴

필수 헤더

_mktemp_s

<io.h>

_wmktemp_s

<io.h> 또는 <wchar.h>

더 많은 호환성 정보를 참조 하십시오. 호환성 소개에서 합니다.

예제

// crt_mktemp_s.cpp
/* The program uses _mktemp to create
 * five unique filenames. It opens each filename
 * to ensure that the next name is unique.
 */

#include <io.h>
#include <string.h>
#include <stdio.h>

char *fnTemplate = "fnXXXXXX";
char names[5][9];

int main()
{
   int i, err, sizeInChars;
   FILE *fp;

   for( i = 0; i < 5; i++ )
   {
      strcpy_s( names[i], sizeof(names[i]), fnTemplate );
      /* Get the size of the string and add one for the null terminator.*/
      sizeInChars = strnlen(names[i], 9) + 1;
      /* Attempt to find a unique filename: */
      err = _mktemp_s( names[i], sizeInChars );
      if( err != 0 )
         printf( "Problem creating the template" );
      else
      {
         if( fopen_s( &fp, names[i], "w" ) == 0 )
            printf( "Unique filename is %s\n", names[i] );
         else
            printf( "Cannot open %s\n", names[i] );
         fclose( fp );
      }
   }

   return 0;
}

샘플 출력

Unique filename is fna03188
Unique filename is fnb03188
Unique filename is fnc03188
Unique filename is fnd03188
Unique filename is fne03188

해당 .NET Framework 항목

해당 사항 없음. 표준 C 함수를 호출할 수 있습니다 PInvoke. 자세한 내용은 플랫폼 호출 예제.

참고 항목

참조

파일 처리

통해, _wfopen

_getmbcp

_getpid

_open, _wopen

_setmbcp

_tempnam, _wtempnam, tmpnam, _wtmpnam

tmpfile_s