다음을 통해 공유


_splitpath_s, _wsplitpath_s

경로 이름을 구성 요소로 나누기. CRT의 보안 기능 에 설명된 대로 보안 향상 기능이 포함된 _splitpath, _wsplitpath 의 버전입니다.

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 버퍼의 크기는 단일 바이트 또는 와이드 문자 입니다. drive 가 NULL 인 경우, 이 값은 0 이어야 합니다.

  • [out] dir
    후행 슬래시를 포함 한 디렉터리 경로입니다. 착신 전환 슬래시 ( / ), 백슬래시 ( \ ), 또는 둘 모두를 사용할 수 있습니다. 디렉토리 경로가 필요하지 않은 경우, 매개 변수에 대해 NULL 를 전달할 수 있습니다.

  • [in] dirNumberOfElements
    dir 버퍼의 크기는 단일 바이트 또는 와이드 문자 입니다. dir 가 NULL 인 경우, 이 값은 0 이어야 합니다.

  • [out] fname
    기본 파일 이름 (확장자가 없는)입니다. 파일 이름이 필요하지 않은 경우, 매개 변수에 대해 NULL 를 전달할 수 있습니다.

  • [in] nameNumberOfElements
    fname 버퍼의 크기는 단일 바이트 또는 와이드 문자 입니다. fname 가 NULL 인 경우, 이 값은 0 이어야 합니다.

  • [out] ext
    앞의 기간(.)을 포함하는 파일 확장명입니다. 파일 이름 확장명이 필요 없는 경우 이 매개 변수에 대해 NULL 를 전달할 수 있습니다.

  • [in] extNumberOfElements
    ext 버퍼의 크기는 단일 바이트 또는 와이드 문자 입니다. ext 가 NULL 인 경우, 이 값은 0 이어야 합니다.

반환 값

성공 시 0이고, 실패 시 오류 코드입니다.

오류 조건

조건

반환 값

path 가 NULL입니다.

EINVAL

drive 가 NULL 이고, driveNumberOfElements 는 0이 아닙니다.

EINVAL

drive 가 NULL 이 아니고, driveNumberOfElements 는 0입니다.

EINVAL

dir 는 NULL 이고 dirNumberOfElements 는 0이 아닙니다.

EINVAL

dir 는 NULL 이 아니고 dirNumberOfElements 는 0입니다.

EINVAL

fname 는 NULL 이고 nameNumberOfElements 는 0이 아닙니다.

EINVAL

fname 는 NULL 이 아니고, nameNumberOfElements 는 0 입니다.

EINVAL

ext 는 NULL 이고 extNumberOfElements 는 0이 아닙니다.

EINVAL

ext 는 NULL 이 아니고 extNumberOfElements 는 0입니다.

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

전체 경로가 구성 요소 (예를 들어, 파일 이름)를 포함하지 않으면, _splitpath_s 는 해당 버퍼에 빈 문자열을 할당 합니다.

C++에서는 이러한 함수를 사용하는 것은 템플릿 오버로드에 의해 단순화됩니다; 오버로드는 자동으로 버퍼의 길이를 추정할수 있고, 크기 인수를 지정할 필요를 없앱니다. 자세한 내용은 안전한 템플릿 오버로드을 참조하십시오.

이러한 함수의 디버그 버전은 우선 0xFD로 버퍼를 채웁니다. 이 동작을 사용하지 않으려면 _CrtSetDebugFillThreshold를 사용하십시오.

요구 사항

루틴

필수 헤더

_splitpath_s

<stdlib.h>

_wsplitpath_s

<stdlib.h> 또는 <wchar.h>

호환성에 대한 자세한 내용은 소개 단원의 호환성 부분을 참조하십시오.

예제

_makepath_s, _wmakepath_s의 예제를 참조하십시오.

해당 .NET Framework 항목

해당 사항 없음. 표준 C 함수를 호출하려면 PInvoke를 사용합니다. 자세한 내용은 플랫폼 호출 예제를 참조하십시오.

참고 항목

참조

파일 처리

_splitpath, _wsplitpath

_fullpath, _wfullpath

_getmbcp

_makepath, _wmakepath

_setmbcp