急急急!!为什么读文件还是出现乱码??

马鸣风萧萧 2003-03-06 09:44:31
CFileDialog dlg(TRUE,_T("wav"),_T("*.wav"),OFN_HIDEREADONLY|OFN_OVERWRITEPROMPT,_T("波形文件(*.wav)"),NULL);
if(dlg.DoModal()==IDOK)
{
string.Format("%s",dlg.GetPathName());
CFile file;
if(!file.Open(string,CFile::modeRead|CFile::typeBinary,NULL))
{MessageBox("读源文件出错!","错误",MB_OK+MB_ICONSTOP);file.Close();return;}
dwLengthOfFile=file.GetLength();
char * pbuf=new char[dwLengthOfFile];
ZeroMemory(pbuf,dwLengthOfFile);
file.Read(pbuf, dwLengthOfFile);

CWnd *p_richedit=this->editdlg.GetDlgItem(IDC_RICHEDIT1);
if(p_richedit==NULL)
MessageBox("编辑器初始化错误!",NULL,MB_OK|MB_ICONSTOP);
p_richedit->SetWindowText(pbuf);
delete pbuf;
file.Close();
}

请问各位大侠,为什么我已经用ZeroMemory函数初始化了,还是在文件读完后,又读出写乱码呢?比如我读一个.wav文件(注:此处的.wav文件为自定义的文件,并非真正的wav文件,而是一般的文本文件。)

wave Noise;
step=pi/204.8;
begin
for t=0.02 to pi*10 do sin(t)*log(t)
end
wave_end

end.葺葺葺葺葺荨

为什么还是出现一些“葺荨”这样的乱码呢?我分配的字符数组不是正好等于文件的长度吗?而且已经初始化了,初始化有问题吗?

...全文
32 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
richmain 2003-03-06
  • 打赏
  • 举报
回复
成工了,别忘了给分啊??
richmain 2003-03-06
  • 打赏
  • 举报
回复
兄弟:
问题是出在你存储的时候,而不是出在读取的时候。
请去检查一下存储的过程,是否有错??

icelight 2003-03-06
  • 打赏
  • 举报
回复
file.Read(pbuf, dwLengthOfFile - 1);
↑↑↑
pbuf的最后一个字符必须是0,所以不能填满。
dwLengthOfFile-1就对了。
fengge8ylf 2003-03-06
  • 打赏
  • 举报
回复
把ZeroMemory换成memset试试

15,978

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 界面
社区管理员
  • 界面
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧