|
C-C中的函数_splitpath说明
引用头文件:
<stdlib.h>
函数原型如下:
void _splitpath( const char *path, char *drive, char *dir, char *fname, char *ext);
参数说明:
1.待处理文件名路径,完整的路径例如:"c:\windows\myfile.txt",不完整:"myfile.txt"。
2.驱动器盘符(drive)
3.中间的路径(dir)
4.文件名(fname)
5.后缀名(ext)
6.不想获取的可以直接填入NULL进行忽略,比如我只想截取文件的后缀名,那么这个函数可以如下调用:_splitpath(path, NULL, NULL, NULL, ext);
7.其中ext必须是已经分配了内存空间的字符串指针,否则会出错(c语言的基本特性,我就不赘述了)
备注
_splitpath 函数将路径分解成四个部分。 _splitpath它们自动处理合适的多字节字符串参数,根据当前使用的多字节代码页识别多字节字符序列. _wsplitpath 是 _splitpath 的宽字符版本;_wsplitpath 的参数是宽字符串。 否则这些函数具有相同行为。 安全性说明" 这些函数可能会导致由缓冲区溢出问题引起的潜在威胁。 缓冲区溢出问题是常见的系统攻击方法,使权限的提升不能确保。
完整示例(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\n\n", path_buffer );
- 12 _splitpath( path_buffer, drive, dir, fname, ext );
- 13 printf( "Path extracted with _splitpath:\n" );
- 14 printf( " Drive: %s\n", drive );
- 15 printf( " Dir: %s\n", dir );
- 16 printf( " Filename: %s\n", fname );
- 17 printf( " Ext: %s\n", ext );
- 18 }
- 19
- 20 OutPut:
- 21 Path created with _makepath: c:\sample\crt\makepath.c
- 22 Path extracted with _splitpath:
- 23 Drive: c:
- 24 Dir: \sample\crt\
- 25 Filename: makepath
- 26 Ext: .c
复制代码
将路径名称分解成组件。 - 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
- );
复制代码
|
|