Win32获取相对路径的方法

通过两个特定函数和一个全局变量,可以使用Func_Pic_Path函数将从'pic'开始的路径转化为当前文件的相对路径。例如,输入'picmainMain_Background.png',最终会得到相对路径'C:...picmainMain_Background.png',注意输出的路径中斜杠为单斜杠。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

两个函数一个全局变量就可以搞定

static char LOGO_PATH[100]="";//先初始化一个地址
//拼接函数
void link(char *s, char *t)
{
	while (*s != '\0')
	{
		s++;
	}
	while (*t != '\0')
	{
		*s++ = *t++;
	}
	*s = '\0';
}
void Func_Pic_Path(char *ss)
{
	//路径
	TCHAR szFilePath[MAX_PATH + 1] = { 0 };
	char pic_path[100] = "pic\\";
	link(pic_path,ss);
	GetModuleFileName(NULL, szFilePath, MAX_PATH);
	(_tcsrchr(szFilePath, _T('\\')))[1] = 0; // 删除文件名,只获得路径字串
	char *str_url = szFilePath;  //例如str_url==e:\program\Debug
	wsprintf((char *)LOGO_PATH, str_url);
	link(LOGO_PATH, pic_path);//最终地址拼接
}

利用以上两个函数,可以用Func_Pic_Path(char *ss)这个函数输入从pic\之后的路径得到此时文件的相对路径
例如:

//这是文件相对exe在根目录下的路径
static char Main_Background[30] = "main\\Main_Background.png";
Func_Pic_Path(Main_Background);
//输出图片的现在路径
MessageBox(NULL,LOGO_PATH,"",NULL);

最后的路径显示"C:\…\pic\main\Main_Background.png"
(因为‘\’是转义字符,所以这里在写入都是默认的双斜杠,编译器用一个来转义,所以最后输出是单斜杠)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值