Поделиться через


_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