_makepath 和_splitpath函数的使用

_makepath 和_splitpath函数的使用

额,这段时间在做一个图片工具的项目,中间用到了这两个函数,现在整理一下资料做个备份(^_^)。其实,在进行实际编程的过程中,我们常常需要对程序的路径进行一系列的操作,比如我们想实现一些文件遍历、查找、访问、读写等操作时,我们有时可能需要对路径进行分解、合并等,这时就会使用到_splitpath和_makepath这俩兄弟函数啦。【买一送一,与之相关的函数还有:FindFile、FindFirstFile、FindNextFile等等吧】


一、这里是_splipath():

 (1)、声明定义:

void _splitpath( const char *path, char*drive, char *dir, char *fname, char *ext );

(2).参数说明:

path, Full path(完整路径)

drive , Optional drive letter, followed by a colon (:)(磁盘驱动包含:)

dir, Optional directory path, including trailing slash. Forward slashes(/ ), backslashes (\ ), or both may be used.(文件路径,无论是以“/”,“\”)

fname, Base filename (no extension)(文件名)

ext , Optional filename extension, including leading period (.)(后缀名)

 

二、这里是_makepath() :

      (1)、声明定义:

void _splitpath( const char *path, char*drive, char *dir, char *fname, char *ext );

    (2)、参数说明:

为环保,此处不再累述,参照上个函数。。。。。。。


三、No Pic!!上源码。。。

 

#include <stdlib.h>

#include <stdio.h> 

voidmain( 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");

  printf( "Path created with_makepath: %s\n\n", path_buffer );

  _splitpath(path_buffer, drive,dir, fname, ext );

  printf( "Path extractedwith _splitpath:\n" );

  printf( "  Drive:%s\n",drive );

  printf( "  Dir:%s\n",dir );

  printf( " Filename:%s\n", fname );

  printf( "  Ext:%s\n",ext );

}

输出结果:

Path created with_makepath:c:\sample\crt\makepath.c

Path extracted with_splitpath:

Drive: c:

Dir: \sample\crt\

Filename: makepath

Ext: .c



  • 1
    点赞
  • 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、付费专栏及课程。

余额充值