在C语言中获取当前的工作路径的方法一般是用内置函数为:
DWORD GetModuleFileName(HMODULE hModule, LPTSTR lpFilename, DWORD nSize);
-
函数的参数说明:
-
hModule 装载一个程序实力的句柄。如果该参数为NULL,该函数返回当前应用程序的全路径;
-
lpFileName 是存放返回的名字的内存块的指针,是一个输出参数;
-
nSize 装载缓冲区lpFileName的最大值。
-
函数的返回值:
-
如果返回成功,将在lpFileName的缓冲区当中返回相应模块的路径,如果nSize过小,那么返回仅按所设置缓冲区的大小返回相应的字符串内容;
-
如果函数失败,返回值将为0,并返回GetLastError异常代码。
值得注意的是需要添加头文件为:include "Windows.h"
例子:
#define MX_PATH 200
...
WCHAR buff[MAX_PATH]; //用于存放获取路径的信息
GetModuleFileName(NULL, buff, MAX_PATH); // 第一个参数为句柄,NULL则指向当前程序;第二个参数用于存放地址的指针;第三个参数是系统自带的宏定义,也就是长度。
CString str = buff; // 将buff存放的路径赋值给字符串str,此时的buff的值如 “C:\Desktop\TEST\Debug\***.exe”
int pos = str.ReverseFind('\\'); // 查找倒数最后一个‘\\’符号
str = str.Left(pos+1); // str只获取exe所在文件加的路径,str为 “ C:\Desktop\TEST\Debug\”
...
// 值得注意的是:第三步的ReverseFind()函数中使用的是单引号