我用CFile读文本文件,全部读到一个CString里面,输出CString末尾总有乱码,是什么原因?
CFileDialog dlg(true,NULL,NULL,OFN_HIDEREADONLY|OFN_OVERWRITEPROMPT,"文本文件(*.txt)|*.txt|所有文件(*.*)|*.*||");
char *pBuf ;
CFile file;
CString str;if(dlg.DoModal()==IDOK)
{
pBuf = new char[file.GetLength()];
file.Read(pBuf, file.GetLength());
str=pBuf;
delete[] pBuf;
file.Close();
AfxMessageBox(str);
}输出的str末尾总有乱码。

解决方案 »

  1.   

    没见file关联到对应文件,没初始化?
      

  2.   

    你在读文件之前,你要把放文件内容的内存块给清空。pBuf = new char[file.GetLength()+1];
    memset(pBuf,0,file.GetLength()+1);
      

  3.   

    哦,是我没有贴出来,
    AfxMessageBox(str);对话框可以弹出,只是最后有乱码,“茸茸茸茸茸茸茸”
      

  4.   

    hxzb7215191(赚钱犹如真挑土,用钱犹如水偷沙)的方法可以,只是不明白为什么开辟的内存大小比文件大小多1?
      

  5.   

    我试了一下这个代码,为什么有错误呢?编译试通过了,不过在选择了txt文件之后就出错了。下面是我的截图:
    http://www.wxxf.net/upload/file/alert/81964935040937f241f97362dae91ef1_error1.jpg
    按下Ignore后的:
    http://www.wxxf.net/upload/file/alert/81964935040937f241f97362dae91ef1_error2.jpg刚刚开始学windows的编程,有的地方不是很明白。我想问下是不是CFile file;的问题,它的值是什么?在if语句中它是直接被使用了。
    楼上的几位能不能解释一下?真的很不明白啊!!
    --------------------------------
    zzol () :请回个短信或是邮件,可以的话能不能把你的正确的工程发给我,谢谢了。[email protected]