分析路径参数函数_splitpath

以前也写过分析程序运行路径的博文http://blog.csdn.net/qiuyeting/article/details/7305077,但今天偶然发现有更好的函数可以帮助我们分析路径参数。这个函数就是_splitpath

函数原型:

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

Full path buffer. _makepath does not check that path does not exceed _MAX_PATH.

drive

Drive letter.

dir

Directory path.

fname

File name.

ext

File name extension.

实例:

#include <stdlib.h>
#include <stdio.h>
#include <string.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];

   //获取当前运行程序的完整路径,赋值给path_buffer
   strcpy(path_buffer,__argv[0]);
   _splitpath( path_buffer, drive, dir, fname, ext ); 
   // 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 );

   return 0;
}

运行结果:


  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
`_splitpath` 是一个 C/C++ 标准库函数,用于将文件路径分解成文件名、目录路径和文件扩展名等部分。它的原型定义如下: ```c++ void _splitpath( const char * path, char * drive, char * dir, char * fname, char * ext ); ``` 参数说明: - `path`:要分解的文件路径。 - `drive`:指向存储驱动器号的缓冲区的指针。如果路径中没有驱动器号,则此参数返回空字符串。 - `dir`:指向存储目录路径的缓冲区的指针。如果路径中没有目录,则此参数返回空字符串。 - `fname`:指向存储文件名的缓冲区的指针。如果路径中没有文件名,则此参数返回空字符串。 - `ext`:指向存储文件扩展名的缓冲区的指针。如果路径中没有扩展名,则此参数返回空字符串。 `_splitpath` 函数分解路径的方式与操作系统有关,Windows 系统下的路径分解方式如下: - 路径以驱动器号开头,则将驱动器号分配给 `drive` 参数,`dir` 参数包含路径中的所有目录,但不包括驱动器号。 - 路径不以驱动器号开头,但以斜杠或反斜杠字符开头,则将根目录分配给 `dir` 参数,`drive` 参数为空字符串。 - 如果路径中有文件名,则 `_splitpath` 函数将文件名分配给 `fname` 参数,如果还有扩展名,则将扩展名分配给 `ext` 参数。 下面是一个使用 `_splitpath` 函数的示例: ```c++ #include <stdio.h> #include <stdlib.h> #include <string.h> #include <io.h> void print_path_parts(const char* path) { char drive[_MAX_DRIVE]; char dir[_MAX_DIR]; char fname[_MAX_FNAME]; char ext[_MAX_EXT]; _splitpath(path, drive, dir, fname, ext); printf("Drive: %s\n", drive); printf("Dir: %s\n", dir); printf("Filename: %s\n", fname); printf("Extension: %s\n", ext); } int main() { const char* path = "C:\\Program Files\\Microsoft Visual Studio\\2019\\Community\\VC\\Tools\\MSVC\\14.29.30133\\bin\\Hostx64\\x64\\cl.exe"; print_path_parts(path); return 0; } ``` 输出结果如下: ``` Drive: C: Dir: \Program Files\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.29.30133\bin\Hostx64\x64\ Filename: cl Extension: .exe ``` 可以看到,该程序将路径分解成了驱动器号、目录路径、文件名和文件扩展名四部分,分别存储在 `drive`、`dir`、`fname` 和 `ext` 变量中,并打印输出。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值