相关资料:
https://blog.csdn.net/weikangc/article/details/45744445 原作者出处
引用头文件:
<stdlib.h>
函数原型如下:
void _splitpath( const char *path, char *drive, char *dir, char *fname, char *ext);
参数说明:
1.待处理文件名路径,完整的路径例如:"c:windowsmyfile.txt",不完整:"myfile.txt"。
2.驱动器盘符(drive)
3.中间的路径(dir)
4.文件名(fname)
5.后缀名(ext)
6.不想获取的可以直接填入NULL进行忽略,比如我只想截取文件的后缀名,那么这个函数可以如下调用:_splitpath(path, NULL, NULL, NULL, ext);
7.其中ext必须是已经分配了内存空间的字符串指针,否则会出错(c语言的基本特性,我就不赘述了)
完整示例(Qt版,本人亲试):
1 #include <stdlib.h>// 引入头文件 2 3 MainWindow::MainWindow(QWidget *parent) // 函数使用 4 : QMainWindow(parent) 5 , ui(new Ui::MainWindow) 6 { 7 ui->setupUi(this); 8 9 std::string sFilePath = "e:\a\b\1.jpg"; 10 char sDirve[_MAX_DRIVE]; 11 char sDir[_MAX_DIR]; 12 char sFName[_MAX_FNAME]; 13 char sFExt[_MAX_EXT]; 14 _splitpath(sFilePath.c_str(), sDirve, sDir, sFName, sFExt); 15 qDebug() << QString::fromStdString(sFilePath);// "e:\a\b\1.jpg" 16 qDebug() << QString::fromStdString(sDirve);// "e:" 17 qDebug() << QString::fromStdString(sDir);// "\a\b\" 18 qDebug() << QString::fromStdString(sFName);// "1" 19 qDebug() << QString::fromStdString(sFExt);// ".jpg" 20 }
完整示例(C版,未测试):
1 #include <stdlib.h> 2 #include <stdio.h> 3 void main( void ) 4 { 5 char path_buffer[_MAX_PATH]; 6 char drive[_MAX_DRIVE]; 7 char dir[_MAX_DIR]; 8 char fname[_MAX_FNAME]; 9 char ext[_MAX_EXT]; 10 _makepath( path_buffer, "c", "\sample\crt\", "makepath", "c" ); 11 printf( "Path created with _makepath: %s ", path_buffer ); 12 _splitpath( path_buffer, drive, dir, fname, ext ); 13 printf( "Path extracted with _splitpath: " ); 14 printf( " Drive: %s ", drive ); 15 printf( " Dir: %s ", dir ); 16 printf( " Filename: %s ", fname ); 17 printf( " Ext: %s ", ext ); 18 } 19 20 OutPut: 21 Path created with _makepath: c:samplecrtmakepath.c 22 Path extracted with _splitpath: 23 Drive: c: 24 Dir: samplecrt 25 Filename: makepath 26 Ext: .c