获取程序路径并去除程序名

问题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 
#include 

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;
}


你可能感兴趣的:(VC)