现象描述:在使用类似
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);
}
浙公网安备 33010602011771号