_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