_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

Параметры

  • [входящий] path
    Полный путь.

  • [исходящий] drive
    Буква диска и двоеточия (:).Можно передать NULL для этого параметра, если не требуется буква диска.

  • [входящий] driveNumberOfElements
    Размер drive буфер, в единый-байте или расширенных символах.If drive существует NULLэто значение должно быть равным 0.

  • [исходящий] dir
    Путь к каталогу, включая завершающий косую черту.Косую черту (front /обратные косые черты () \ ) или оба может использоваться.Можно передать NULL если для данного параметра не требуется путь к каталогу.

  • [входящий] dirNumberOfElements
    Размер dir буфер, в единый-байте или расширенных символах.If dir существует NULLэто значение должно быть равным 0.

  • [исходящий] fname
    Базовое имя файла (без расширения).Можно передать NULL для этого параметра, если не нужно имя файла.

  • [входящий] nameNumberOfElements
    Размер fname буфер, в единый-байте или расширенных символах.If fname существует NULLэто значение должно быть равным 0.

  • [исходящий] ext
    Расширение имени файла, включая период (ведущий**.**). Можно передать NULL для этого параметра, если нет необходимости расширение имени файла.

  • [входящий] extNumberOfElements
    Размер ext буфер, в единый-байте или расширенных символах.If ext существует NULLэто значение должно быть равным 0.

Возвращаемое значение

Нуль, если выполнение прошло успешно; код ошибки при сбое.

Условия возникновения ошибок

Атрибут Condition

Возвращаемое значение

path существуетNULL

EINVAL

drive существует NULL" driveNumberOfElements не равны нулю

EINVAL

drive подписчиков, не являющихсяNULL" driveNumberOfElements нуль

EINVAL

dir существует NULL" dirNumberOfElements не равны нулю

EINVAL

dir подписчиков, не являющихсяNULL" dirNumberOfElements нуль

EINVAL

fname существует NULL" nameNumberOfElements не равны нулю

EINVAL

fname подписчиков, не являющихсяNULL" nameNumberOfElements нуль

EINVAL

ext существует NULL" extNumberOfElements не равны нулю

EINVAL

ext подписчиков, не являющихсяNULL" extNumberOfElements нуль

EINVAL

Если либо над условиями, недопустимый параметр вызван обработчик, как описано в разделе Проверка параметров .Если выполнение может быть продолжено, то эти функции установки errno В EINVAL и извлечение EINVAL.

Если все буферы слишком короткими, чтобы сохранить результат, эти функции снимите все буферы к пустым строкам, устанавливать errno В ERANGEи извлечение ERANGE.

Заметки

_splitpath_sфункция нарушает путь в его 4 компонента._splitpath_s автоматически обрабатывает аргументы характерной черты, узнающ последовательности многобайтового символов в соответствии с многобайтовой кодовой странице в настоящий момент используется._wsplitpath_s версия расширенных символов _splitpath_s; аргументы _wsplitpath_sхарактерные черты.Эти функции в противном случае поведение идентично

Сопоставления подпрограммы Родов-Текста

Подпрограмма TCHAR.H

_MBCS не заданные _UNICODE &

Указанный символ _MBCS

Указанный _UNICODE

_tsplitpath_s

_splitpath_s

_splitpath_s

_wsplitpath_s

Каждый компонент полного пути хранятся в отдельном буфере; константы манифеста _MAX_DRIVE" _MAX_DIR" _MAX_FNAMEи _MAX_EXT(определяется в STDLIB.H) укажите максимальный допустимый размер для каждого компонента файла.Компоненты файла, большие константы вызывают соответствующие очевидные повреждение кучи.

В следующей таблице перечислены значения очевидных констант.

Имя

Значение

_MAX_DRIVE

3

_MAX_DIR

256

_MAX_FNAME

256

_MAX_EXT

256

Если полный путь не содержит компонент (например, имя файла) _splitpath_s присвоить пустую строку в соответствующий буфер.

В C++ с помощью этих функций упрощает перегрузками шаблона; перегруженные методы могут определять длина буфера, автоматически, устранение необходимости указывать аргумент size.Дополнительные сведения см. в разделе Предоставляйте перегруженный шаблона.

Отладочной версии этих функций сначала заполняют буфер с 0xFD.Чтобы отключить эту реакция на событие, воспользуйтесь _CrtSetDebugFillThreshold.

Требования

Процедура

Обязательный заголовок

_splitpath_s

<stdlib.h>

_wsplitpath_s

<stdlib.h> OR <wchar.h>

Дополнительные сведения о совместимости см. Совместимость во введении.

Пример

См. пример _makepath_s, _wmakepath_s.

Эквивалент в .NET Framework

Неприменимо. Для c# используйте стандартная функция PInvoke. Дополнительные сведения см. в разделе Примеры вызовов неуправляемого кода.

См. также

Ссылки

Обработка файла

_splitpath, _wsplitpath

_fullpath, _wfullpath

_getmbcp

_makepath, _wmakepath

_setmbcp