_splitpath
, _wsplitpath
Разорвать путь к компонентам. Более безопасные версии этих функций доступны, см. в разделе _splitpath_s
. _wsplitpath_s
Синтаксис
void _splitpath(
const char *path,
char *drive,
char *dir,
char *fname,
char *ext
);
void _wsplitpath(
const wchar_t *path,
wchar_t *drive,
wchar_t *dir,
wchar_t *fname,
wchar_t *ext
);
Параметры
path
Полный путь.
drive
Буква диска, за которой следует двоеточие (:). Этот параметр можно передать NULL
, если буква диска не нужна.
dir
Путь к каталогу, включая заключительную косую черту. Могут использоваться символы косой черты (/
), обратной косой черты (\
) или оба. Передайте NULL
этот параметр, если путь к каталогу не нужен.
fname
Базовое имя файла (без расширения). Передайте NULL
этот параметр, если имя файла не требуется.
ext
Расширение имени файла, включая начальную точку (.
). Передайте NULL
этот параметр, если не требуется расширение имени файла.
Замечания
Функция _splitpath
разделяет путь на четыре компонента. Функция_splitpath
автоматически требуемым образом обрабатывает аргументы в виде многобайтовых строк, распознавая многобайтовые последовательности символов в соответствии с текущей многобайтовой кодовой страницей. _wsplitpath
— это двухбайтовая версия _splitpath
; аргументы для _wsplitpath
представляют собой двухбайтовые строки. В остальном эти функции ведут себя одинаково.
Примечание по безопасности. Эти функции подвергаются переполнению буфера. Проблемы переполнения буфера — это распространенный метод атак на системы, который приводит к несанкционированному повышению уровня прав. Дополнительные сведения см. в разделе "Избегание переполнения буфера". Доступны более безопасные версии этих функций; see _splitpath_s
, _wsplitpath_s
.
По умолчанию глобальное состояние этой функции ограничивается приложением. Чтобы изменить это поведение, см . статью "Глобальное состояние" в CRT.
Сопоставления подпрограмм универсального текста
TCHAR.H рутина |
_UNICODE и _MBCS не определен |
_MBCS Определенные |
_UNICODE Определенные |
---|---|---|---|
_tsplitpath |
_splitpath |
_splitpath |
_wsplitpath |
Каждый компонент полного пути хранится в отдельном буфере; Константы манифеста _MAX_DRIVE
, _MAX_FNAME
_MAX_DIR
и _MAX_EXT
(определенные вSTDLIB.H
) указывают максимальный размер каждого компонента файла. Компоненты файла, размер которых превышает значения соответствующих констант манифеста, могут вызвать повреждение кучи.
Каждый буфер должен быть соразмерен соответствующей константе манифеста, чтобы избежать потенциального переполнения буфера.
В приведенной ниже таблице перечислены значения констант манифеста.
Имя. | Значение |
---|---|
_MAX_DRIVE |
3 |
_MAX_DIR |
256 |
_MAX_FNAME |
256 |
_MAX_EXT |
256 |
Если полный путь не содержит компонент (например, имя файла), _splitpath
назначает пустые строки соответствующим буферам.
Вы можете передать NULL
_splitpath
любой параметр, отличный от path
того, что вам не нужен.
В противном path
NULL
случае вызывается недопустимый обработчик параметров, как описано в разделе "Проверка параметров". Если выполнение может быть продолжено, параметр errno
устанавливается в значение EINVAL
.
Требования
Маршрут | Обязательный заголовок |
---|---|
_splitpath |
<stdlib.h> |
_wsplitpath |
<stdlib.h> или <wchar.h> |
Дополнительные сведения о совместимости см. в разделе Совместимость.
Пример
Пример см. в примере _makepath
.
См. также
Обработка файлов
_fullpath
, _wfullpath
_getmbcp
_makepath
, _wmakepath
_setmbcp
_splitpath_s
, _wsplitpath_s