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

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


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值