在vc里的文件操作 我把文件路径写入另一文件 在读出后用读出的文件路径采用open函数是提示非法操作?
我是这样写的

char  fPath[50]={'\0'} ;
//取系统文件 查看用户文件目录
   stdSysFile.Open("c:\\myfile.txt",CFile::modeRead, NULL);
   stdSysFile.Read(fPath,50);
  stdSysFile.Close();
  exChang( );//这个函数是我用来把多取出来的字符去掉,
             // 我调试时fpath="c:\\My Documents\\ym.txt";
            // 可是下面调试有问题
//为空则弹出没有信息的MessageBox,否则显示第一个
  if(fPath[0]=='\0')
  {  MessageBox("没有学生信息");return; 
  }    else
  {  stdFile.Open(fPath,CFile::modeRead);}//在这里有系统弹出“非法操作”对话框

解决方案 »

  1.   

    c:\My Documents\ym.txt存在吗?
      

  2.   

    在啊  我开始有一个另存为 已经把 c:\My Documents\ym.txt创建了 这里会不会是fPath的原因啊啊?
    不过条的时候watch里看到的是fpath="c:\\My Documents\\ym.txt";有错吗??
      

  3.   

    可能 fpath ="c:\\My Documents\\ym.txt" 结尾不是'\0';
    在 定义fPath时,memset(fPath,'\0',50) 
      

  4.   

    如果路径在变量中的话,转义字符是无效的,因此,不能使用"C:\\My Documents"这种形式,应该用"C:\My Documents"。
      

  5.   

    我开始没有用转换是 fpath=="c:\\My Documents\\ym.txt然后是乱码“
    转换后就是 fpath="c:\\My Documents\\ym.txt" 还是不行,转换函数是
    我自己写的函数,没有用memset(fPath,'\0',50) 
    因为用户文件的长度是不确定的 有时没有50个字节,"c:\\My Documents\\ym.txt"
    长度没有50
      

  6.   

    char  fPath[50]={'\0'} ;X
    char fPath[256];
    memset(fPath, 0, 256);
      

  7.   

    我把程序改后 fpath=“C:\My Documents\ym.txt”可是还是有弹出的提示框
      

  8.   

    同意“freezing_man(独立寒风中)”的看法,调试时在watch里看到的应该只有一个反斜杠,你看原文件或者转换的时候是不是有问题
      

  9.   

    没有自己去试,楼主可以把fpath改为"c:\ym.txt"。不知道你的My Documents有问题没有。你换成别的不要把它放到我的文当中。
      

  10.   

    这个问题是这样的答案是这样的”如果路径在变量中的话,转义字符是无效的,因此,不能使用"C:\\My Documents"这种形式,应该用"C:\My Documents"。正如freezing_man(独立寒风中) (所说
    谢谢
      

  11.   

    ”没有自己去试,楼主可以把fpath改为"c:\ym.txt"。不知道你的My Documents有问题没有。你换成别的不要把它放到我的文当中“
    谢谢 我把他改到c盘下后可以了 我怎样将分分给你们??。