다음을 통해 공유


_makepath_s, _wmakepath_s

경로 이름에서 구성 요소를 만듭니다.이러한 버전의 있습니다 _makepath, _wmakepath 와 보안 기능 향상에 설명 된 대로 CRT의 보안 기능.

errno_t _makepath_s(
   char *path,
   size_t sizeInBytes,
   const char *drive,
   const char *dir,
   const char *fname,
   const char *ext 
);
errno_t _wmakepath_s(
   wchar_t *path,
   size_t sizeInWords,
   const wchar_t *drive,
   const wchar_t *dir,
   const wchar_t *fname,
   const wchar_t *ext 
);
template <size_t size>
errno_t _makepath_s(
   char (&path)[size],
   const char *drive,
   const char *dir,
   const char *fname,
   const char *ext 
); // C++ only
template <size_t size>
errno_t _wmakepath_s(
   wchar_t (&path)[size],
   const wchar_t *drive,
   const wchar_t *dir,
   const wchar_t *fname,
   const wchar_t *ext 
); // C++ only

매개 변수

  • [out] path
    전체 경로 버퍼입니다.

  • [in] sizeInWords
    단어를 버퍼의 크기입니다.

  • [in] sizeInBytes
    버퍼의 크기 (바이트)에서입니다.

  • [in] drive
    문자 (A, B, 등)을 포함 원하는 드라이브에서 선택적 후행 콜론에 해당 합니다._makepath_s존재 하는 경우 콜론에서 합성 패스를 자동으로 삽입 됩니다.경우 drive 입니다 NULL 또는 합성 된 요소는 빈 문자열을 드라이브 문자 없음 나타납니다 path 문자열입니다.

  • [in] dir
    드라이브 지정자 나 실제 파일 이름을 포함 하지 않는 디렉터리의 경로 포함 합니다.후행 슬래시가 며에서 단일 슬래시 (/) 또는 백슬래시 (\) 또는 두 가지 모두 사용할 수 있습니다 dir 인수입니다.경우 끝에 슬래시 (/ 또는 \) 지정 하면 자동으로 삽입 됩니다.경우 dir 입니다 NULL 또는 합성 된 삽입 지점을 디렉터리 경로가 빈 문자열을 path 문자열입니다.

  • [in] fname
    파일 이름 확장명이 없는 기본 파일 이름이 포함 되어 있습니다.경우 fname 입니다 NULL 또는 합성 된 삽입 지점을 빈 문자열, 파일 이름 path 문자열입니다.

  • [in] ext
    실제 파일 이름 확장명을 사용 하거나 앞에 마침표 (.) 없이 포함 되어 있습니다._makepath_s기간에 표시 되지 않는 경우에 자동으로 삽입 ext.경우 ext 입니다 NULL 또는 합성 된 삽입 지점을 확장명이 없는 빈 문자열을 path 문자열입니다.

반환 값

성공 하는 경우에 0입니다. 실패 시 오류 코드입니다.

오류 조건

path

sizeInWords / sizeInBytes

Return

내용path

NULL

모든

EINVAL

수정 되지 않음

모든

< = 0

EINVAL

수정 되지 않음

위의 오류 조건이 발생 하는 경우 이러한 함수는 잘못 된 매개 변수 처리기의 설명에 따라 호출 매개 변수 유효성 검사.실행을 계속 수 있으면 errno 으로 설정EINVAL 함수를 반환 하 고EINVAL**.** NULL매개 변수를 사용할 수 drive, fname, 및 ext.동작에 대 한 내용은 이러한 매개 변수에 빈 문자열이 나 null 포인터가 있으면 설명 부분을 참조 하십시오.

설명

_makepath_s 함수에 결과 저장 하는 개별 구성 요소에서 합성 경로 문자열을 만듭니다 path.path 드라이브 문자, 디렉터리 경로, 파일 이름 및 파일 이름 확장명 포함 될 수 있습니다._wmakepath_s와이드 문자 버전입니다 _makepath_s. 한 인수 _wmakepath_s 와이드 문자 문자열입니다._wmakepath_s_makepath_s 그렇지을 동일 하 게 작동 합니다.

일반 텍스트 루틴 매핑

Tchar.h 루틴

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

_Mbcs가 정의

_Unicode가 정의

_tmakepath_s

_makepath_s

_makepath_s

_wmakepath_s

path 인수는 전체 경로 저장할 수 있을 만큼 빈 버퍼에 가리켜야 합니다.합성 path 보다 작거나 같아야는 _MAX_PATH 상수 stdlib.h에 정의 됩니다.

경로인 경우 NULL, 설명에 따라 잘못 된 매개 변수 처리기가 호출 매개 변수 유효성 검사.또한, errno 로 설정 된 EINVAL.NULL에 대 한 모든 매개 변수 값이 허용 됩니다.

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

이 함수들은 먼저 버퍼 0xFD 입력합니다.이 동작을 해제 하려면 사용 _CrtSetDebugFillThreshold.

요구 사항

루틴

필수 헤더

_makepath_s

<stdlib.h>

_wmakepath_s

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

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

예제

// crt_makepath_s.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];
   errno_t err;

   err = _makepath_s( path_buffer, _MAX_PATH, "c", "\\sample\\crt\\",
                      "crt_makepath_s", "c" );
   if (err != 0)
   {
      printf("Error creating path. Error code %d.\n", err);
      exit(1);
   }
   printf( "Path created with _makepath_s: %s\n\n", path_buffer );
   err = _splitpath_s( path_buffer, drive, _MAX_DRIVE, dir, _MAX_DIR, fname,
                       _MAX_FNAME, ext, _MAX_EXT );
   if (err != 0)
   {
      printf("Error splitting the path. Error code %d.\n", err);
      exit(1);
   }
   printf( "Path extracted with _splitpath_s:\n" );
   printf( "  Drive: %s\n", drive );
   printf( "  Dir: %s\n", dir );
   printf( "  Filename: %s\n", fname );
   printf( "  Ext: %s\n", ext );
}

Output

Path created with _makepath_s: c:\sample\crt\crt_makepath_s.c

Path extracted with _splitpath_s:
  Drive: c:
  Dir: \sample\crt\
  Filename: crt_makepath_s
  Ext: .c

해당 .NET Framework 항목

System::IO::File:: 만들기

참고 항목

참조

파일 처리

_fullpath, _wfullpath

_splitpath_s, _wsplitpath_s

_makepath, _wmakepath