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