1、下面程序为什么运行会出错?当我把for循环改为for(int i=0;f!='\n';i++)救正确了?
CFile  m_CharFile;
char f;
char m[20];  // 存放读到的字符
m_CharFile.Read(&f,sizeof(char));
for(int i=0;f!=EOF,,i++)
{
    m[i]=f;
    m_CharFile.Read(&f,sizeof(char));
}
cf.Close();
AfxMessageBox(m);2、第二个问题等下再问!

解决方案 »

  1.   

    可能 EOF 读不到你的数组里但通常都会这样
    i = 0; i < m_CharFile.GetLength(); i++或
    i < strlen( m )
      

  2.   

    Read函数并不会返回给f一个EOF的,所以不能这样判断是否读取到文件尾而你用f='\n'来判断的话,就只能读取一行了楼上qwedcxza(自娱自乐) 的方法比较好些
      

  3.   

    还是不行---------是不是m的大小不够?还有for(int i=0;f!=EOF,,i++)  这里怎么是逗号??
                         ~~~~
      

  4.   

    不好意思,是我写错了,笔误!但真的不可以,运行结果和妹改之前一样。编译通过了,但运行时报错!for(int i=0;i < m_CharFile.GetLength();i++)
      

  5.   

    再有别忘了初始化数组memset( m, sizeof( m ) * 20, 0 );
      

  6.   

    错误为:Unhandled exception in...
      

  7.   

    CFile的默认构造函数并没有打开文件
      

  8.   

    楼上的朋友们,我只是没有把程序写全,源程序试这样的,但是(str!=EOF)这条语句编译时没错,一运行就出错了!!,各位大哥救救我!!
        CStdioFile cf;
        cf.Open("c:\\abc.txt",CFile::modeReadWrite);
        char str,strRead[100];
        memset( strRead, sizeof(strRead) * 100, 0 );
        cf.Read(&str,sizeof(char));
        for(int i=0;str!=EOF;i++)
        {
            strRead[i]=str;
            cf.Read(&str,sizeof(char));
        }
        cf.Close();
        AfxMessageBox(strRead);
      

  9.   

    文件结尾的判断要通过read的返回值,通常是0。代码可以像下面这样:

    for(int i=0; 0 != cf.Read(&str,sizeof(char)); i++)
        {
            strRead[i]=str;
        }

    另外,
    memset( strRead, sizeof(strRead) * 100, 0 )有错误应该是:memset( strRead, sizeof(strRead), 0 );因为 sizeof(strRead) == 100 为 TRUE
      

  10.   

    for(int i=0;str!=NULL;i++)
    试试