_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。有关更多信息,请参见 平台调用示例。