下面是我用CFile类读文件的代码,目的是读出自定义的文件后(注:在此,.wav文件并非真正的波形文件,其内容仅是一般的文本文件),将读出的内容输出到一个编辑控件窗口中:
CString string;
char pbuf[1000]; 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();
file.Read( pbuf, dwLengthOfFile);
CWnd *p_rich=this->dlg2.GetDlgItem(ID_RICHEDIT);
p_rich->SetWindowText(pbuf);
file.Close();
}
可是读出后,却在源文件的末尾老出现一些莫名奇妙的字符:"烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫"
比如:Wave Ramp;
step=pi/102.4;
repeat 4
begin
for t=0 to 2*pi do t
end
wave_endend.烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫请问这是怎么回事??甘如何不出现这些字符呢?
还有,就是有的文件读出后就没有这些东西,而且那些文件一般都比较长。
CString string;
char pbuf[1000]; 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();
file.Read( pbuf, dwLengthOfFile);
CWnd *p_rich=this->dlg2.GetDlgItem(ID_RICHEDIT);
p_rich->SetWindowText(pbuf);
file.Close();
}
可是读出后,却在源文件的末尾老出现一些莫名奇妙的字符:"烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫"
比如:Wave Ramp;
step=pi/102.4;
repeat 4
begin
for t=0 to 2*pi do t
end
wave_endend.烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫请问这是怎么回事??甘如何不出现这些字符呢?
还有,就是有的文件读出后就没有这些东西,而且那些文件一般都比较长。
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,dwLenghtOfFile);
file.Read( pbuf, dwLengthOfFile);
CWnd *p_rich=this->dlg2.GetDlgItem(ID_RICHEDIT);
p_rich->SetWindowText(pbuf);
file.Close();
delete pbuf;