static int read( const char *filename)
{
FILE *str;
CString string;
string.Format(_T("%s"), filename);
::MessageBox(NULL, string, _T("warning"), MB_OK);
if (!(str = fopen( filename, "rb" )) ) //打开文件
{
return false;
}
..........
}
程序中如上,MessageBox弹出的对话框显示文件名是:"\SDMEM\DICT\ce\xdict-ce-gb.dict.dz"
但是fopen()总是打开失败.
如果直接指定路径名,如下:
if ((str = fopen( "\\SDMEM\\DICT\\ce\\xdict-ce-gb.dict.dz", "rb" )) == NULL) //打开文件
{
return false;
}
又是可以成功打开的!
我实在找不到原因,难道是"\\"和"\"的不同导致的么?
看起来挺奇怪,
用getlasterror来看看什么错误代码
很简单,也是一个容易犯的错误,你传文件名参数的时候,把文件名那个引号去掉
这个问题我解决了!
是单字符和双字符的问题.将传近来的filename进行了转换就可以了!
int byte = wcstombs( filename_next, filename, 200 );
if (!(str = fopen(filename_next, "rb" )) ) //打开文件
{
return false;
}
谢谢大家的帮忙!