打开文件时的一个奇怪问题,大家帮忙看看!
我在程序中打开一个文件时使用相对路径时,打开错误,错误提示是:目录或文件不存在.使用绝对路径时就能正常打开.
但后面我做了特测试程序使用相对路径又能正常打开文件.很奇怪,麻烦大家帮忙看看.
程序:
绝对路径:/opt/dictionary/dict/data/对应数据文件
相对路径:data/对应数据文件
FILE* vDOpenFile(int iDictName)
{
FILE *pFile;
char szFileName[100];
memset(szFileName,0,sizeof(szFileName));
switch(iDictName)
{
case EEM: strcpy(szFileName, "data/EEM.dict "); break;
case ME: strcpy(szFileName, "data/ME.dict "); break;
case MM: strcpy(szFileName, "data/MM.dict "); break;
}
printf( "filename@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@:%s\n ",szFileName);
if((pFile=fopen(szFileName, "rb "))==NULL)
{
printf( "open the file :%s error\n ",szFileName);
perror( "fopen error ");
return NULL;
}
else
{
return pFile;
}
}
测试程序:
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main()
{
FILE *dataFile;
char filename[30];
printf( "%d\n ",sizeof(filename));
memset(filename,0,sizeof(filename));
strcpy(filename, "data/EEM.dict ");
if((dataFile=fopen(filename, "rb "))==NULL){
printf( "open error!\n ");
}
fclose(dataFile);
}
------解决方案--------------------相对路径根你执行程序时候的当前路径有关系。
实际的文件路径=当前路径+程序里的相对路径
如,
cd /opt/dictionary/dict
后,执行你的程序,data/对应数据文件
的相对路径就OK了。
若,
cd /opt/dictionary
后,执行你的程序,
那相对路径就变成 dict/data/对应数据文件
了。
------解决方案--------------------VC的执行目录是你工程文件的目录