_mktemp, _wmktemp
고유한 파일 이름을 생성 합니다.이러한 함수를 더 안전한 버전을 사용할 수 있습니다. see _mktemp_s, _wmktemp_s.
char *_mktemp(
char *template
);
wchar_t *_wmktemp(
wchar_t *template
);
template <size_t size>
char *_mktemp(
char (&template)[size]
); // C++ only
template <size_t size>
wchar_t *_wmktemp(
wchar_t (&template)[size]
); // C++ only
매개 변수
- template
파일 이름 패턴입니다.
반환 값
각이 함수에 대 한 포인터의 수정 된 서식 파일을 반환합니다.함수 반환 NULL 경우 template 잘못 구성 된 또는 더 이상의 고유 이름이 지정 된 서식 파일을 만들 수 있습니다.
설명
_mktemp 함수를 수정 하 여 고유한 파일 이름을 만듭니다는 template 인수입니다._mktemp런타임 시스템에서 인식 하는 멀티 바이트 문자 시퀀스는 현재 사용 중인 멀티 바이트 코드 페이지에 따라 멀티 바이트 문자 문자열 인수를 적절 하 게 자동으로 처리 합니다._wmktemp와이드 문자 버전입니다 _mktemp. 인수와 반환 값을 _wmktemp 와이드 문자 문자열입니다._wmktemp및 _mktemp 동일 그렇지 않은 경우를 제외 하 고는 게 동작 _wmktemp 멀티 바이트 문자 문자열을 처리 하지 않습니다.
일반 텍스트 루틴 매핑
Tchar.h 루틴 |
_UNICODE 및 _mbcs가 정의 되지 않았습니다. |
_Mbcs가 정의 |
_Unicode가 정의 |
---|---|---|---|
_tmktemp |
_mktemp |
_mktemp |
_wmktemp |
template 인수가 있는 폼 baseXXXXXX를 위치 base 일부인 새 파일 이름을 입력 하 고 각 X에서 제공 하는 문자 자리 표시자입니다 _mktemp.각 자리 표시자 문자를 template X 대문자 여야 합니다._mktemp보존 base 와 영문자로 뒤에 오는 첫 번째 X를 대체 합니다._mktemp다음 뒤 바꾸는 X는 다섯 자리 값을 합니다. 이 값은 호출 프로세스에서 또는 다중 스레드 프로그램에서 호출 하는 스레드를 식별 하는 고유 번호입니다.
각 성공적으로 호출 하려면 _mktemp 수정 template.각 후속 호출에서 동일한 프로세스 또는 스레드가 동일한 template 인수를 _mktemp 에서 반환 하는 이름이 일치 하는 파일 이름에 대 한 검사 _mktemp 에 대 한 이전 호출.주어진 이름에 대 한 파일이 존재 하는 경우 _mktemp 해당 이름을 반환 합니다.이전에 반환 된 모든 이름에 대 한 파일이 있는 경우 _mktemp 사용 다음 사용 가능한 소문자로 'a'부터 순서 대로 이전에 반환 된 이름에 'z'의 알파벳 문자를 대체 하 여 새 이름을 만듭니다.예를 들어, 경우 base 입니다.
fn
고가 제공 하는 다섯 자리의 값 _mktemp 12345, 이름이 반환 됩니다.
fna12345
이 이름은 FNA12345 파일을 만드는 데 사용 되 고이, 같은 프로세스 또는 스레드가 동일한 호출에서 다음 이름을 반환 파일이 base 에 대 한 template 입니다.
fnb12345
FNA12345 존재 하지 않는 경우에 다시 반환 된 다음 이름이입니다.
fna12345
_mktemp26 고유한 파일 이름이 주어진된 자료 및 템플릿 값 조합에 대 한 최대를 만들 수 있습니다.따라서 fnz12345는 고유한 파일 이름입니다 _mktemp 를 만들 수 있습니다의 base 및 template 이 예제에 사용 되는 값입니다.
오류가 발생 하면 errno 설정 됩니다.경우 template 형식이 잘못 되었습니다 (6 보다 적은 예를 들어, X), errno 로 설정 된 EINVAL.경우 _mktemp 26 모든 가능한 파일 이름이 이미 존재 하기 때문에 고유한 이름을 만들 수 없습니다 _mktemp 서식 파일을 빈 문자열로 설정 하 고 반환 EEXIST.
C + +에서이 함수는 최신, 보안 상응 하는 이러한 함수를 호출 하는 템플릿 오버 로드 되어 있습니다.자세한 내용은 보안 템플릿 오버 로드를 참조하십시오.
요구 사항
루틴 |
필수 헤더 |
---|---|
_mktemp |
<io.h> |
_wmktemp |
<io.h> 또는 <wchar.h> |
더 많은 호환성 정보를 참조 하십시오. 호환성 소개에서 합니다.
예제
// crt_mktemp.c
// compile with: /W3
/* The program uses _mktemp to create
* unique filenames. It opens each filename
* to ensure that the next name is unique.
*/
#include <io.h>
#include <string.h>
#include <stdio.h>
#include <errno.h>
char *template = "fnXXXXXX";
char *result;
char names[27][9];
int main( void )
{
int i;
FILE *fp;
for( i = 0; i < 27; i++ )
{
strcpy_s( names[i], sizeof( names[i] ), template );
/* Attempt to find a unique filename: */
result = _mktemp( names[i] ); // C4996
// Note: _mktemp is deprecated; consider using _mktemp_s instead
if( result == NULL )
{
printf( "Problem creating the template\n" );
if (errno == EINVAL)
{
printf( "Bad parameter\n");
}
else if (errno == EEXIST)
{
printf( "Out of unique filenames\n");
}
}
else
{
fopen_s( &fp, result, "w" );
if( fp != NULL )
printf( "Unique filename is %s\n", result );
else
printf( "Cannot open %s\n", result );
fclose( fp );
}
}
}
해당 .NET Framework 항목
해당 사항 없음. 표준 C 함수를 호출할 수 있습니다 PInvoke. 자세한 내용은 플랫폼 호출 예제.