栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

c语言|获取其他文件的绝对路径转相对路径

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

c语言|获取其他文件的绝对路径转相对路径

GetModuleFileName获取当前程序的绝对路径。然后对比再strcat之类的。

只能获得同一盘符下的相对路径:

#include 


bool AbsPath2RelPath(char* pa, char* relPath)
{
	char sCurrentDir[256];
	GetModuleFileName(NULL, sCurrentDir, sizeof(sCurrentDir));
	char* p = strrchr(sCurrentDir, '\');
	*(p+1) = 0;
	char* p = sCurrentDir;
	
	char pat[256];
	strcpy(pat, pa);//防止原路径被改变
	char* path = pat;
	strcpy(relPath,"");
	const char token[10] = "..\";
	int count,i;
	for (i=1; *path && *p && (*path == *p) && strrchr(path, '\'); ++path, ++p)
		if(*path=='\'&&*p==*path)i=0;
	if (i)
	{
		//查找失败
		return false;
	}
	char* pTemp; count = 0;
	while (pTemp=strrchr(p, '\')) {
		*pTemp = 0;
		strcat(relPath, token);
	}
	strcat(relPath, path);
	return true;
}

同一文件夹(简化版):

bool AbsPath2RelPath(char* pa, char* relPath)
{
	char sCurrentDir[256];
	GetModuleFileName(NULL, sCurrentDir, sizeof(sCurrentDir));
	char* p = strrchr(sCurrentDir, '\');
	*(p+1) = 0;
	char* p = sCurrentDir;
	
	char pat[256];
	strcpy(pat, pa);//防止原路径被改变
	char* path = pat;
	strcpy(relPath,"");
	const char token[10] = "..\";
	int count;
	for (;*path && *p && (*path == *p) && strrchr(path, '\'); ++path, ++p);
	if (*p)
	{
		//查找失败
		return false;
	}
	strcat(relPath, path);
	return true;
}

虽然没用上。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/444102.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号