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


_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 представляют собой двухбайтовые строки. В остальном эти функции ведут себя идентично.

Примечание о безопасности    Эти функции создают потенциальную угрозу, принесенную вместе с проблемой переполнения буфера. Ошибки переполнения буфера — частый метод атаки системы, в результате которого происходит несанкционированное получение прав. Дополнительные сведения см. в разделе Как избежать переполнения буфера. Доступны более безопасные версии этих функций, см. раздел _splitpath_s, _wsplitpath_s.

Универсальное текстовое сопоставление функций

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

_UNICODE & _MBCS не определены

_MBCS определено

_UNICODE определено

_tsplitpath

_splitpath

_splitpath

_wsplitpath

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

Размер каждого буфера должен быть таким же, что и соответствующая константа манифеста, чтобы избежать возможного переполнения буфера.

В приведенной ниже таблице перечислены значения констант манифеста.

Имя

Значение

_MAX_DRIVE

3

_MAX_DIR

256

_MAX_FNAME

256

_MAX_EXT

256

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

Можно передать NULL в _splitpath для любого параметра, кроме path , если соответствующий компонент не нужен.

Если параметр path имеет значение NULL, вызывается обработчик недопустимого параметра, как описано в разделе Проверка параметров. Если продолжение выполнения разрешено, то errno устанавливается в EINVAL, и функция возвращает EINVAL.

Требования

Подпрограмма

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

_splitpath

<stdlib.h>

_wsplitpath

<stdlib.h> или <wchar.h>

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

Пример

См. пример для _makepath.

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

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

См. также

Ссылки

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

_fullpath, _wfullpath

_getmbcp

_makepath, _wmakepath

_setmbcp

_splitpath_s, _wsplitpath_s