问题1:如何确定应用程序的路径?
问题2:如何去除程序目录中最后的文件名?(如去除c:\Debug\test.exe中的\test.exe,值留下c:\Debug)
1.使用GetModuleFileName 获得应用程序的路径,然后去掉可执行件名。
Example:
TCHAR exeFullPath[MAX_PATH]; // MAX_PATH 在 API 中定义了吧,好象是 128
GetModuleFileName(NULL,exeFullPath,MAX_PATH)
2.先定位到字符串的结束标志‘\0’,再循环从后往前找‘\\’,
一旦找到替换当前位置的字符为‘\0’跳出循环。
例子:
#include <windows.h>
#include <iostream>
using namespace std;
bool CutLastFileName(char* szPath)//去除最后的文件名
{
size_t len = strlen(szPath);
for (int i = len; i >= 0; i--)
{
if(szPath[i]=='\\')
{
szPath[i]='\0';
return true;
}
}
return false;
}
void main ()
{
char szPath[MAX_PATH];
if( !GetModuleFileName( NULL, szPath, MAX_PATH ) )//获取程序运行目录(全路径)
/*如果此处编译提示:不能将参数 2 从“char [260]”转换为“LPWSTR”
请将项目属性设为:使用多字节字符集*/
{
printf("GetModuleFileName failed (%d)\n", GetLastError());
return;
}
CutLastFileName(szPath);
cout << szPath << endl;
}