博客园  :: 首页  :: 新随笔  :: 订阅 订阅  :: 管理

相对路径——潜在问题 @Gjjie

Posted on 2012-03-15 14:00  MAPZONE  阅读(146)  评论(0)    收藏  举报

现象描述:在使用类似

FILE* pf =fopen(const char *filename,  const char *mode);

这样的函数时,filename要求写一个文件的路径全名,如果此时不写绝对的路径(如:"D:\a.txt"),只写"a.txt",本来是想相对当前工程所在路径。

但是如果你的程序中有一个浏览按钮,在浏览过程中浏览到其他路径,那么会破坏程序中"a.txt"的相对工程路径,此时的"a.txt"的路径会认为在刚浏览的路径下。

造成的隐患是:如果你读取"a.txt",你会读不到,而如果是写入,会在刚刚浏览过的路径下生成新的文件,而这个路径并不是你想要的路径,在编程过程中会产生

这样你难以发觉的错误。

解决办法:使用绝对路径。可以通过参数的办法动态的给出绝对路径。如:

void GetString(const char* pFilepath)
{
FILE* pf = fopen(pFilepath, "r");
if (pf == NULL)
{
return;
}
char pBuffer[255];
fread(pBuffer, sizeof(pBuffer)/sizeof(char), 1, pf);
fclose(pf);
}