_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. Дополнительные сведения см. в разделе Примеры вызовов неуправляемого кода.