1) 如果文件稍大, 以下方式中循环读取文件内容并输出, 如何判断已将文件读取完?(请补充一下)2) 有更好的方式读取文件吗?char szText[600]; CFile fDat;
fDat.Open(L"\\print3.txt", CFile::modeRead | CFile::typeBinary);
fDat.Read(szText, sizeof(szText));
PrintTxt(szText); //打印输出所读的内容
......
fDat.Close();

解决方案 »

  1.   

    try
    {
    CFile file(_T("F:\\11.txt"), CFile::modeRead); CString strText(_T(""));
    char buf[10] = {0};
    DWORD dwEnd = file.SeekToEnd();
    file.SeekToBegin();
    while(dwEnd != file.GetPosition())
    {
    memset(buf, 0, sizeof(buf));
    file.Read(buf, 9);
    strText += CString(buf);
    }
    file.Close();
    AfxMessageBox(strText);
    }
    catch (CFileException* e)
    {
    e->ReportError();
    e->Delete();
    }
      

  2.   

    // CFile::GetLength();获取文件长度
    // 然后就可以计算出循环次数
      

  3.   

    1) 如果文件稍大, 以下方式中循环读取文件内容并输出, 如何判断已将文件读取完?(请补充一下)
    ==========
    可以先得到文件的大小,int iLen = file.GetLength();
    然后一次分配和文件大小相同的缓冲区,一次性读完,不用循环
      

  4.   

    while循环就行啊,当读出的数据长度跟你的buf不一样长的时候,跳出循环就行了,CFile.read的返回值就是读取的长度
    不然就像楼上说的,获取长度,然后你想怎么控制就怎么控制呗,也就加几个变量标记下读取状态进行控制就行
      

  5.   


    为什么是file.Read(buf, 9),而不是file.Read(buf, 10) 呢?