把绝对路径换成相对路径的问题

rcbblgy 2008-10-08 09:04:59
程序中有这样一句
_stprintf(m_path, _T("D:/output/test/test.ini"));,test.ini是一个配置文件,在程序运行过程中需要导入,程序生成在output目录下,我现在想把test.ini的路径换成相对路径,该怎么改?
...全文
132 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
rcbblgy 2008-10-08
  • 打赏
  • 举报
回复
TCHAR m_path[512];
GetModuleFileName(NULL,m_path,sizeof(m_path));
TCHAR* pToken =_tcsrchr(m_skin,_T('\\'));
*(pToken+1) = 0;
_tcscat(m_skin,_T("test\\test.ini"));

这样就可以搞定了。

但还是有些不明白。
TCHAR* pToken =_tcsrchr(m_skin,_T('\\'));
*(pToken+1) = 0;
这两句的作用应该是去掉文件名吧,看不大懂是如何实现的。
还有_tcsrchr和_tcscat有啥区别?
rcbblgy 2008-10-08
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 freshairfly 的回复:]
先获取当前程序所在的路径
TCHAR sFileName[MAX_PATH];
GetModuleFileName(NULL, sFileName, MAX_PATH);

sFileName是当前程序的绝对路径(包括文件名)
[/Quote]
那怎么把文件名去掉?
lsldd 2008-10-08
  • 打赏
  • 举报
回复
对不起,有点错误

char *fullPath= "c:\\dd\\c.exe";
void fun(LPSTR fullPath, LPSTR fileName)
{
//LPSTR fileName[255];//删掉这行
char *buff = strrchr(full, '\\');// 找到路径名最后的反斜杠.
if ( buff )
strcpy(fileName, ++buff);// 找到,则取得文件名(相对路径,注意加1跳过反斜杠)
else
strcpy(fileName, fullPath);// 没找到,说明本来就是相对路径,直接cpy
}
lsldd 2008-10-08
  • 打赏
  • 举报
回复
给你个函数做参考:
char *fullPath= "c:\\dd\\c.exe";
void fun(LPSTR fullPath, LPSTR fileName)
{
LPSTR fileName[255];
char *buff = strrchr(full, '\\');
if ( buff )
strcpy(fileName, ++buff);// 取得文件名(相对路径)
else
strcpy(fileName, fullPath);// 如果本来就是相对路径,直接cpy
}
hhyttppd 2008-10-08
  • 打赏
  • 举报
回复
up 3
帅得不敢出门 2008-10-08
  • 打赏
  • 举报
回复
up 2楼。
freshairfly 2008-10-08
  • 打赏
  • 举报
回复
先获取当前程序所在的路径
TCHAR sFileName[MAX_PATH];
GetModuleFileName(NULL, sFileName, MAX_PATH);

sFileName是当前程序的绝对路径(包括文件名)
bingway 2008-10-08
  • 打赏
  • 举报
回复
_stprintf(m_path, _T("../test/test.ini"));

65,211

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧