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_endend.葺葺葺葺葺荨为什么还是出现一些“葺荨”这样的乱码呢?我分配的字符数组不是正好等于文件的长度吗?而且已经初始化了,初始化有问题吗?
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_endend.葺葺葺葺葺荨为什么还是出现一些“葺荨”这样的乱码呢?我分配的字符数组不是正好等于文件的长度吗?而且已经初始化了,初始化有问题吗?
↑↑↑
pbuf的最后一个字符必须是0,所以不能填满。
dwLengthOfFile-1就对了。