_makepath, _wmakepath
구성 요소에서 경로 이름을 생성합니다. 이러한 기능의 더 안전한 버전을 사용할 수 있습니다. _makepath_s, _wmakepath_s를 참조하십시오.
void _makepath(
char *path,
const char *drive,
const char *dir,
const char *fname,
const char *ext
);
void _wmakepath(
wchar_t *path,
const wchar_t *drive,
const wchar_t *dir,
const wchar_t *fname,
const wchar_t *ext
);
매개 변수
path
전체 경로 버퍼입니다.drive
원하는 드라이브에 따른 문자(A, B, 등등)와 선택적인 뒤의 콜론을 포함합니다. _makepath는 복합 경로에 콜론이 누락되었다면 이를 자동으로 삽입합니다. drive가 NULL 또는 빈 문자열을 가리키면, 복합 path 문자열에는 드라이브 문자가 나타나지 않습니다.dir
드라이브 지정자 또는 실제 파일 이름을 제외한 디렉터리의 경로를 포함합니다. 후행 슬래시는 선택적이며 슬래시 (/) 또는 백슬래시 (\) 중 하나 또는 둘 모두 dir 인수에 사용할 수 있습니다. 뒤에 후행 슬래시 (/ 또는 \)가 지정되지 않으면, 자동적으로 삽입됩니다. dir가 NULL 또는 빈 문자열을 가리키는 경우, 복합 path 문자열에 디렉터리 경로가 삽입되지 않습니다.fname
파일 이름 확장명이 없는 기본 파일 이름을 포함합니다. fname가 NULL 또는 빈 문자열을 가리키면, 복합 path 문자열에 파일 이름이 삽입되지 않습니다.ext
앞의 마침표(.)를 포함하거나 포함하지 않은 실제 파일 이름 확장명을 포함합니다. _makepath는 ext에 마침표가 나타나지 않은 경우 자동으로 이를 삽입합니다. ext가 NULL 또는 빈 문자열을 가리키면, 복합 path 문자열에 확장명이 삽입되지 않습니다.
설명
_makepath 함수는 개별 구성요소에서 복합 경로 문자열을 생성하고 path에 결과를 저장합니다. path는 드라이브 문자, 디렉터리 경로, 파일 이름 및 파일 이름 확장명을 포함할 수 있습니다. _wmakepath는 _makepath의 와이드 문자 버전이며, _wmakepath에 대한 인수는 와이드 문자 문자열입니다. _wmakepath 및 _makepath 는 동일하게 작동합니다.
Security Note는 null로 끝나는 문자열을 사용 합니다. 버퍼 오버런을 피하기 위해 null로 끝나는 문자열은 path 버퍼의 크기를 초과 하지 않아야만 합니다. _makepath는 복합 경로 문자열의 길이가 _MAX_PATH를 넘지 않도록 보장하지 않습니다. 자세한 내용은 버퍼 오버런 방지를 참조하십시오.
제네릭 텍스트 라우팅 매핑
Tchar.h 루틴 |
_UNICODE 및 _MBCS 정의되지 않음 |
_MBCS 정의됨 |
_UNICODE 정의됨 |
---|---|---|---|
_tmakepath |
_makepath |
_makepath |
_wmakepath |
path 인수는 반드시 전체 경로를 포함하기에 충분히 큰 빈 버퍼를 가리켜야 합니다. 복합 path는 반드시 Stdlib.h에 정의된 _MAX_PATH 상수보다 더 크지 않아야 합니다.
경로가 NULL인 경우 매개 변수 유효성 검사에 설명된 대로 잘못된 매개 변수 처리기가 호출됩니다. 또한, errno는 EINVAL로 설정됩니다. NULL값은 다른 모든 매개 변수에 대해 허용됩니다.
요구 사항
루틴 |
필수 헤더 |
---|---|
_makepath |
<stdlib.h> |
_wmakepath |
<stdlib.h> 또는 <wchar.h> |
호환성에 대한 자세한 내용은 소개 단원의 호환성 부분을 참조하십시오.
예제
// crt_makepath.c
#include <stdlib.h>
#include <stdio.h>
int main( void )
{
char path_buffer[_MAX_PATH];
char drive[_MAX_DRIVE];
char dir[_MAX_DIR];
char fname[_MAX_FNAME];
char ext[_MAX_EXT];
_makepath( path_buffer, "c", "\\sample\\crt\\", "makepath", "c" ); // C4996
// Note: _makepath is deprecated; consider using _makepath_s instead
printf( "Path created with _makepath: %s\n\n", path_buffer );
_splitpath( path_buffer, drive, dir, fname, ext ); // C4996
// Note: _splitpath is deprecated; consider using _splitpath_s instead
printf( "Path extracted with _splitpath:\n" );
printf( " Drive: %s\n", drive );
printf( " Dir: %s\n", dir );
printf( " Filename: %s\n", fname );
printf( " Ext: %s\n", ext );
}