日期:2014-05-16  浏览次数:20561 次

打开文件时的一个奇怪问题,大家帮忙看看!
我在程序中打开一个文件时使用相对路径时,打开错误,错误提示是:目录或文件不存在.使用绝对路径时就能正常打开.
但后面我做了特测试程序使用相对路径又能正常打开文件.很奇怪,麻烦大家帮忙看看.
程序:
绝对路径:/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的执行目录是你工程文件的目录