_makepath, _wmakepath

创建从元素的路径名称。这些功能的更安全版本可用; _makepath_s, _wmakepath_s参见。

void _makepath(
   char *path,
   const char *drive,
   const char *dir,
   const char *fname,
   const char *ext 
);
void _wmakepath(
   wchar_t *path,
   const wchar_t *drive,
   const wchar_t *dir,
   const wchar_t *fname,
   const wchar_t *ext 
);

参数

  • path
    完整路径缓冲区。

  • drive
    包含一个字母 (A, B,等) 与所需的驱动程序和可选尾部的冒号对应。_makepath 插入自动冒号在聚合路径,则会丢失。如果 drive 是 NULL 或指向一个空字符串,驱动器号不会出现在复合 path 字符串。

  • dir
    包含目录路径,不包括驱动器指示符或实际文件名。这尾部斜杠是可选的,因此,一个正斜杠 (/) 或斜杠 (\) 或两个可用于唯一 dir 参数。如果尾部的反斜杠 (/或 \) 未指定,则自动插入。如果 dir 是 NULL 或指向一个空字符串,目录路径在聚合 path 字符串中插入。

  • fname
    包含基文件名,没有任何文件扩展名。如果 fname 是 NULL 或指向一个空字符串,文件名在聚合 path 字符串中插入。

  • ext
    包含实际文件扩展名,有或没有驱动的句点 ()。_makepath 插入自动内,如果不出现在 ext。如果 ext 是 NULL 或指向一个空字符串,扩展在聚合 path 字符串中插入。

备注

_makepath 功能创建从各个元素的复合路径字符串,将结果存储在 path。path 可能包括驱动器号、目录路径、文件名和文件扩展名。_wmakepath_makepath的宽字符版本;为 _wmakepath 的参数是宽字符字符串。_wmakepath_makepath 否则具有相同的行为。

安全说明 "使用一个 null 终止的字符串。若要避免缓冲区溢出,该 null 终止的字符串不能超过 path 缓冲区的大小。_makepath 不保证复合路径字符串的长度不超过 _MAX_PATH。有关更多信息,请参见 避免缓冲区溢出

一般文本例程映射

Tchar.h 实例

未定义的 _UNICODE 和 _MBCS

定义的 _MBCS

定义的 _UNICODE

_tmakepath

_makepath

_makepath

_wmakepath

path 参数必须指向足够大空缓冲区容纳完整路径。复合 path 大于 _MAX_PATH 串常数必须不,定义在 Stdlib.h。

如果该路径是 NULL,无效参数调用处理程序,如 参数验证所述。此外, errno 设置为 EINVAL。NULL 值允许其他参数。

要求

实例

必需的头

_makepath

stdlib.h

_wmakepath

stdlib.h 或 wchar.h

有关更多兼容性信息,请参见中介绍的 兼容性

示例

// crt_makepath.c
#include <stdlib.h>
#include <stdio.h>

int main( void )
{
   char path_buffer[_MAX_PATH];
   char drive[_MAX_DRIVE];
   char dir[_MAX_DIR];
   char fname[_MAX_FNAME];
   char ext[_MAX_EXT];

   _makepath( path_buffer, "c", "\\sample\\crt\\", "makepath", "c" ); // C4996
   // Note: _makepath is deprecated; consider using _makepath_s instead
   printf( "Path created with _makepath: %s\n\n", path_buffer );
   _splitpath( path_buffer, drive, dir, fname, ext ); // C4996
   // Note: _splitpath is deprecated; consider using _splitpath_s instead
   printf( "Path extracted with _splitpath:\n" );
   printf( "  Drive: %s\n", drive );
   printf( "  Dir: %s\n", dir );
   printf( "  Filename: %s\n", fname );
   printf( "  Ext: %s\n", ext );
}
  

.NET Framework 等效项

系统:: IO:: 文件:: 创建

请参见

参考

文件处理

_fullpath, _wfullpath

_splitpath, _wsplitpath

_makepath_s, _wmakepath_s