我在vc6.0下作了一个MFC单文档,打开文件然后读取数据
FILE *fd = fopen(filename.c_str(),"r");
if(!fd){
::MessageBox(NULL,"can't open file","Error",MB_OK);
return;
}

char buf[256];
fgets(buf,256,fd);
fgets(buf,256,fd);
        ...但是一模一样的在vs2008下做了一遍,提示can't open file,这个是怎么回事呢
vc6.0和vs2008下哪里需要不同啊?

解决方案 »

  1.   

    同意楼上的,VC6编译器和VS2008编译器中工程的相对路径有区别。
      

  2.   

    Debug下看看你的filename.c_str()的数据是什么?对不?
      

  3.   

    vs2008下不知道怎么单步调试查看数据,该怎么做?
    是不是vs2008下根据目录打开文件的方法和vc6.0不一样啊
      

  4.   

    打开文件的方法 filename.c_str() 是不是有就是根据目录路径打开文件?
    在filename.后面出现很多提示,有at  begin   c_str等 都是什么意思啊
      

  5.   

    你把相关的文件都放在一个目录里,比如可执行程序所在的目录里再建立一个子目录用来存放相头文件,这样,程序运行时先取得可执行文件气在的目录,然后再这样:
    path=".\\子目录\\a.dat";
    这样就可以了
      

  6.   

    vs2008的当前目录,假设为mfc,那这个文件夹下有个res存放资源的文件夹,你把txt放在这里也可以。访问时:
    res/a.txt。注意,必须从vs2008启动运行程序。如果你双击exe,那么exe的当前目录就是它所在的文件夹,即debug,此时访问文件肯定出错。
      

  7.   

    解决了,原来之前filename访问的是getfilename()
    改成getpathname()后就可以了
    谢谢大家!