_splitpath_s, _wsplitpath_s
경로 이름은 여러 구성 요소로 나눕니다.이러한 버전의 있습니다 _splitpath, _wsplitpath 와 보안 기능 향상에 설명 된 대로 CRT의 보안 기능.
errno_t _splitpath_s(
const char * path,
char * drive,
size_t driveNumberOfElements,
char * dir,
size_t dirNumberOfElements,
char * fname,
size_t nameNumberOfElements,
char * ext,
size_t extNumberOfElements
);
errno_t _wsplitpath_s(
const wchar_t * path,
wchar_t * drive,
size_t driveNumberOfElements,
wchar_t *dir,
size_t dirNumberOfElements,
wchar_t * fname,
size_t nameNumberOfElements,
wchar_t * ext,
size_t extNumberOfElements
);
template <size_t drivesize, size_t dirsize, size_t fnamesize, size_t extsize>
errno_t _splitpath_s(
const char *path,
char (&drive)[drivesize],
char (&dir)[dirsize],
char (&fname)[fnamesize],
char (&ext)[extsize]
); // C++ only
template <size_t drivesize, size_t dirsize, size_t fnamesize, size_t extsize>
errno_t _wsplitpath_s(
const wchar_t *path,
wchar_t (&drive)[drivesize],
wchar_t (&dir)[dirsize],
wchar_t (&fname)[fnamesize],
wchar_t (&ext)[extsize]
); // C++ only
매개 변수
[in] path
전체 경로입니다.[out] drive
드라이브 문자, 콜론 (:).전달 하 여 NULL 드라이브 문자는 필요 하지 않은 경우이 매개 변수에 대 한.[in] driveNumberOfElements
크기는 drive 에서 1 바이트 또는 와이드 문자 버퍼입니다.경우 drive 입니다 NULL,이 값은 0 이어야 합니다.[out] dir
후행 슬래시를 포함 하는 디렉터리 경로입니다.슬래시 ( / ), 백슬래시 ( \ ), 또는 두 가지 모두를 사용할 수 있습니다.전달 하 여 NULL 디렉터리 경로 필요 하지 않은 경우이 매개 변수에 대 한.[in] dirNumberOfElements
크기는 dir 에서 1 바이트 또는 와이드 문자 버퍼입니다.경우 dir 입니다 NULL,이 값은 0 이어야 합니다.[out] fname
기본 파일 이름 확장명 없이입니다.전달 하 여 NULL 파일 이름이 필요 하지 않은 경우이 매개 변수에 대 한.[in] nameNumberOfElements
크기는 fname 에서 1 바이트 또는 와이드 문자 버퍼입니다.경우 fname 입니다 NULL,이 값은 0 이어야 합니다.[out] ext
파일 이름 확장명 앞에 기간을 포함 하 여, (.).전달 하 여 NULL 파일 이름 확장명 필요 하지 않은 경우이 매개 변수에 대 한.[in] extNumberOfElements
크기를 ext 에서 1 바이트 또는 와이드 문자 버퍼입니다.경우 ext 입니다 NULL,이 값은 0 이어야 합니다.
반환 값
성공 하는 경우에 0입니다. 실패 시 오류 코드입니다.
오류 조건
조건 |
반환 값 |
---|---|
path입니다 NULL |
EINVAL |
driveis NULL, driveNumberOfElements is non-zero |
EINVAL |
driveis non-NULL, driveNumberOfElements is zero |
EINVAL |
diris NULL, dirNumberOfElements is non-zero |
EINVAL |
diris non-NULL, dirNumberOfElements is zero |
EINVAL |
fnameis NULL, nameNumberOfElements is non-zero |
EINVAL |
fnameis non-NULL, nameNumberOfElements is zero |
EINVAL |
extis NULL, extNumberOfElements is non-zero |
EINVAL |
extis non-NULL, extNumberOfElements is zero |
EINVAL |
위의 조건 중 하나라도 발생 하는 경우 잘못 된 매개 변수 처리기를의 설명에 따라 호출 됩니다 매개 변수 유효성 검사 .실행을 계속 수 있으면 이러한 함수를 설정 errno 에 EINVAL 를 반환 하 고 EINVAL.
너무 짧은 결과 저장할 버퍼가 있을 경우 이러한 함수 빈 문자열 설정 합니다 모든 버퍼 해제 errno 에 ERANGE, 반환 하 고 ERANGE.
설명
_splitpath_s 함수를 네 가지 구성 요소로 경로 중단 합니다._splitpath_s 자동으로 현재 사용 중인 멀티 바이트 코드 페이지에 따라 멀티 바이트 문자 시퀀스를 인식 합니다. 멀티 바이트 문자 문자열 인수를 적절 하 게 처리 합니다._wsplitpath_s 와이드 문자 버전입니다 _splitpath_s. 한 인수 _wsplitpath_s와이드 문자 문자열입니다.그렇지 않으면 이러한 함수를 동일 하 게 작동
일반 텍스트 루틴 매핑
TCHAR입니다.H 루틴 |
_UNICODE 및 _Mbcs가 정의 되지 않았습니다. |
_Mbcs가 정의 |
_Unicode가 정의 |
---|---|---|---|
_tsplitpath_s |
_splitpath_s |
_splitpath_s |
_wsplitpath_s |
각 구성 요소의 전체 경로 다른 버퍼에 저장 됩니다. 매니페스트 상수 _MAX_DRIVE, _MAX_DIR, _MAX_FNAME, 및 _MAX_EXT (STDLIB에 정의 됩니다.H) 각 파일 구성 요소에 대 한 최대 허용 크기를 지정 합니다.구성 요소 매니페스트 상수는 해당 힙 손상으로 인해 발생할 것 보다 더 큰 파일입니다.
다음 표는 매니페스트 상수 값입니다.
Name |
값 |
---|---|
_MAX_DRIVE |
3 |
_MAX_DIR |
256 |
_MAX_FNAME |
256 |
_MAX_EXT |
256 |
구성 요소 (예: filename)에서 전체 경로 포함 하지 않는 경우 _splitpath_s 는 빈 문자열을 해당 버퍼에 할당 합니다.
C + +에서이 함수를 사용 하 여 템플릿 오버 로드에 단순화 됩니다. 오버 버퍼 길이 size 인수를 지정 하지 않아도 자동으로 유추할 수 있습니다.자세한 내용은 보안 템플릿 오버 로드를 참조하십시오.
이 함수들은 먼저 버퍼 0xFD 입력합니다.이 동작을 해제 하려면 사용 _CrtSetDebugFillThreshold.
요구 사항
루틴 |
필수 헤더 |
---|---|
_splitpath_s |
<stdlib.h> |
_wsplitpath_s |
<stdlib.h> 또는 <wchar.h> |
추가 호환성 정보를 참조 하십시오. 호환성 소개에서 합니다.
예제
예제를 보려면 _makepath_s, _wmakepath_s.
해당 .NET Framework 항목
해당 사항 없음. 표준 C 함수를 호출할 수 있습니다 PInvoke. 자세한 내용은 플랫폼 호출 예제.