1.PathFindFileName函数的作用是返回路径中的文件名。

PTSTR PathFindFileName(
__in PTSTR pPath
);

pPath是指向文件路径字符串的指针,函数返回指向文件名的指针(如果找到的话),否则返回指向路径开头的指针。

PathFindFileName既支持Windows下的反斜杆,也支持Unix下的斜杠,还支持斜杆和反斜杠的混合,

例如:

      * Author: Chechen
* Date: 2014/7/24
*/
#include <stdio.h>
#include <Shlwapi.h> int main()
{
char path[] = "C:\\Windows\\System32/notepad.exe";
/* will output "notepad.exe" */
printf("%s\n", PathFindFileName(path));
return ;
}

2.获取指定的系统路径 SHGetSpecialFolderPath

   #include   <shlobj.h>
#pragma comment(lib, "shell32.lib") TCHAR szPath[MAX_PATH];
SHGetSpecialFolderPathNULL,szPath,CSIDL_COMMON_DOCUMENTS, FALSE);
// szPath 就是

3.PathRemoveFileSpec函数

PathRemoveFileSpec函数的作用是将路径末尾的文件名和反斜杠去掉。

例如,我们想获取EXE文件自身所在的文件夹,可以这样写:

#include <stdio.h>
#include <Shlwapi.h>// 使用PathRemoveFileSpec函数

#pragma comment(lib, "shlwapi.lib") //这个库也要有,不然会报链接错误
int main(int argc, char *argv[])
{
//多字节的方法
char self[MAX_PATH];
//方法一:
GetModuleFileName(NULL, self, MAX_PATH);//得到工作路径 例如:C:\\TestDemo\\Debug\\Service.exe
PathRemoveFileSpec(self);//C:\\TestDemo\\Debug
printf("%s\n", self); /*strrchr()函数的作用是:
查找一个字符串在另一个字符串中 末次 出现的位置,并返回从字符串中的这个位置起,一直到字符串结束的所有字符;
如果未能找到指定字符,那么函数将返回False。
*/
//方法二:
char self2[MAX_PATH];
GetModuleFileName(NULL, self2, MAX_PATH);
*strrchr(self2,'\\') = '\0';
printf("%s\n", self2); return ;
}
#include <stdio.h>
#include <Shlwapi.h> int main(int argc, char *argv[])
{
//Unicode的方法
TCHAR text[MAX_PATH];
//方法一:
GetModuleFileName(NULL, text, MAX_PATH);//得到工作路径 例如:C:\\TestDemo\\Debug\\Service.exe
PathRemoveFileSpec(text);//C:\\TestDemo\\Debug /*wcsrchr()函数的作用是:
查找一个字符串在另一个字符串中 末次 出现的位置,并返回从字符串中的这个位置起,一直到字符串结束的所有字符;
如果未能找到指定字符,那么函数将返回False。
*/
//方法二:
TCHAR text2[MAX_PATH];
GetModuleFileName(NULL, text2, MAX_PATH);
*wcsrchr(text2,'\\') = '\0'; return ;
}
TCHAR    szModulePath[MAX_PATH * ];
ZeroMemory(szModulePath, sizeof(szModulePath));
::GetModuleFileName(NULL, szModulePath, _countof(szModulePath) - ); TCHAR *cp = _tcsrchr(szModulePath, _T('\\'));//C:\\TestDemo\\Debug\\
if (*cp)
{
*(cp + ) = _T('\0'); // remove file name
}

4.得到文件扩展名

LPTSTR PathFindExtension( LPCTSTR pPath );

判断文件是否存在

BOOL PathFileExistsW(LPCWSTR pszPath);

VC++ PathFindFileName函数,由文件路径获得文件名的更多相关文章

  1. JS如何获取上传标签的文件路径和文件名?

    如何使用JS获取type="file"的标签上传文件的文件路径及文件名: 代码: <!doctype html><html lang="en" ...

  2. python获取文件路径, 文件名, 后缀名

    def get_filePath_fileName_fileExt(fileUrl): """ 获取文件路径, 文件名, 后缀名 :param fileUrl: :ret ...

  3. python关于文件路径和文件名的操作

    os.path.abspath(path) #返回绝对路径(包含文件名的全路径) os.path.basename(path) —— 去掉目录路径获取文件名 os.path.dirname(path) ...

  4. C#中使用Path、Directory、Split、Substring实现对文件路径和文件名的常用操作实例

    场景 现在有一个文件路径 E:\\BTSData\\2019-11\\admin_20180918_1_1_2 需要获取最后的文件名admin_20180918_1_1_2 需要获取文件的上层目录20 ...

  5. Asp.Net 获取FileUpload控件的文件路径、文件名、扩展名

    string fileNameNo = Path.GetFileName(FileUploadImg.PostedFile.FileName); //获取文件名和扩展名string Directory ...

  6. C#使用System.IO.Path获取文件路径、文件名

    class Program { static void Main(string[] args) { //获取当前运行程序的目录 string fileDir = Environment.Current ...

  7. 由struts错误使用引发的漏洞,使用参数作为返回的文件路径或文件名,作为返回result 值

    该错误可以导致他人任意访问该路径下的任何文件. struts 文件 <?xml version="1.0" encoding="UTF-8" ?> ...

  8. C#通过文件路径获取文件名小技巧

    string fullPath = @"\WebSite1\Default.aspx"; string filename = System.IO.Path.GetFileName( ...

  9. php文件路径获取文件名

    物理截取: $file = '/www/htdocs/inc/lib.inc.php'; $filename = basename($file); echo $filename, '<br/&g ...

随机推荐

  1. Python:fromkeys()方法

    简介 Python 字典(Dictionary) fromkeys() 函数用于创建一个新字典,以序列seq中元素做字典的键,value为字典所有键对应的初始值. 语法 fromkeys()方法语法: ...

  2. 02 - nginx - 反向代理、限速

    一.Nginx反向代理 代理服务器,客户机在发送请求时,不会直接发送给目的主机,而是先发送给代理服务器. 代理服务接受客户机请求之后,再向主机发出,并接收目的主机返回的数据,存放在代理服务器的硬盘中, ...

  3. Eclipse+Pydev 搭建开发环境(转)

    add by zhj: 对原文略有修改 原文:http://www.cnblogs.com/TankXiao/archive/2013/05/29/3033640.html C#之所以容易让人感兴趣, ...

  4. KVM VCPU线程调度问题的讨论

    2017-11-15 今天闲着没有突然想了想VCPU线程调度的问题,具体描述如下: 当代表VCPU的线程获得控制权后,首先会通过KVM接口进入到内核,从内核进入到非根模式,那么此时站在全局调度器的点上 ...

  5. 修改dedecms面包屑导航的首页链接关键字

    dedecms面包屑导航默认是"主页>分类>二级分类>",我们知道链接的锚文字对排名有一定影响,这时可以考虑将“主页”改成具体的关键字,那么如何修改dedecms ...

  6. 8 jmeter之集合点

    集合点:集合点用以同步虚拟用户,以便恰好在同一时刻执行任务.在测试计划中,可能会要求系统能够承受1000 人同时提交数据,在LoadRunner 中可以通过在提交数据操作前面加入集合点,这样当虚拟用户 ...

  7. SSH进行登录远程主机,实验室网站,项目

    1:下载putty,双击putty.exe     http://www.putty.be/latest.html 输入要连接的ip和端口号,直接打开open.或者在saved Sessions框里面 ...

  8. [py]约瑟夫问题-循环队列

    约瑟夫问题(历史战争问题) 直观理解 老外视频讲解 模拟器演示 约瑟夫问题 数学姥公众号 讲的最清楚 背景及,推倒过程讲解得很清晰,旨在提高人们对数据的兴趣 简单说下: 几个人围成一圈(循环队列), ...

  9. 浏览器 extension和plugin的区别[来自知乎]

    "扩展"和"插件",其实都是软件组件的一种形式,Chrome 只不过是把两种类型的组件分别给与了专有名称,一个叫"扩展",另一个叫" ...

  10. python3与mysql:创建表、插入数据54

    import pymysql db = pymysql.connect(host=',db='jodb1',port=3307,charset='utf8') # #测试连接开发库成功 # db = ...