Заметка
Доступ к этой странице требует авторизации. Вы можете попробовать войти в систему или изменить каталог.
Доступ к этой странице требует авторизации. Вы можете попробовать сменить директорию.
Разбивает имя пути на компоненты. Эти функции — это версии с улучшениями безопасности, _wsplitpathкак описано в функциях безопасности в CRT._splitpath
Синтаксис
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 в однобайтовых или расширенных символах. Если параметр drive имеет значение NULL, это значение должно быть 0.
dir
Путь к каталогу, включая заключительную косую черту. Могут использоваться символы косой черты (/), обратной косой черты (\\) или оба. Этот параметр можно передать NULL , если путь к каталогу не нужен.
dirNumberOfElements
Размер буфера dir в однобайтовых или расширенных символах. Если параметр dir имеет значение NULL, это значение должно быть 0.
fname
Базовое имя файла (без расширения). Этот параметр можно передать NULL , если имя файла не требуется.
nameNumberOfElements
Размер буфера fname в однобайтовых или расширенных символах. Если параметр fname имеет значение NULL, это значение должно быть 0.
ext
Расширение имени файла, включая начальную точку (.). Этот параметр можно передать NULL , если не требуется расширение имени файла.
extNumberOfElements
Размер буфера ext в однобайтовых или расширенных символах. Если параметр 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 разделяет путь на четыре компонента. Функция_splitpath_s автоматически требуемым образом обрабатывает аргументы в виде многобайтовых строк, распознавая многобайтовые последовательности символов в соответствии с текущей многобайтовой кодовой страницей. _wsplitpath_s — это двухбайтовая версия _splitpath_s; аргументы для _wsplitpath_s представляют собой двухбайтовые строки. В остальном эти функции ведут себя одинаково.
По умолчанию глобальное состояние этой функции ограничивается приложением. Чтобы изменить это поведение, см . статью "Глобальное состояние" в CRT.
Сопоставления подпрограмм универсального текста
TCHAR.H рутина |
_UNICODE и _MBCS не определен |
_MBCS Определенные |
_UNICODE Определенные |
|---|---|---|---|
_tsplitpath_s |
_splitpath_s |
_splitpath_s |
_wsplitpath_s |
Каждый компонент полного пути хранится в отдельном буфере; Константы манифеста _MAX_DRIVE, _MAX_FNAME_MAX_DIRи _MAX_EXT (определенные вSTDLIB.H) указывают максимальный допустимый размер каждого компонента файла. Компоненты файла, размер которых превышает значения соответствующих констант манифеста, могут вызвать повреждение кучи.
В приведенной ниже таблице перечислены значения констант манифеста.
| Имя. | Значение |
|---|---|
_MAX_DRIVE |
3 |
_MAX_DIR |
256 |
_MAX_FNAME |
256 |
_MAX_EXT |
256 |
Если полный путь не содержит компонент (например, имя файла), _splitpath_s назначает пустую строку соответствующему буферу.
В C++ использование этих функций упрощено шаблонными перегрузками; перегрузки могут определить длину буфера автоматически, устраняя необходимость указывать аргумент size. Дополнительные сведения см. в разделе "Безопасные перегрузки шаблонов".
Версии библиотек отладки этих функций сначала заполняют буфер 0xFE. Чтобы отключить это поведение, используйте _CrtSetDebugFillThreshold.
Требования
| Маршрут | Обязательный заголовок |
|---|---|
_splitpath_s |
<stdlib.h> |
_wsplitpath_s |
<stdlib.h> или <wchar.h> |
Дополнительные сведения о совместимости см. в разделе Совместимость.
Пример
См. пример для _makepath_s. _wmakepath_s
См. также
Обработка файлов
_splitpath, _wsplitpath
_fullpath, _wfullpath
_getmbcp
_makepath, _wmakepath
_setmbcp