CFile类的读取问题
我在使用CFile类读取一个文本文件的时候,却意外读出了莫名其妙的数据,求高手帮忙看一下:
help.txt内容:abc123
读出的内容: "abc123铪铪铪 "
这个后面的空格和“铪”是从哪里来的啊?
程序片段:
BOOL CDlgHelp::OnInitDialog()
{
CDialog::OnInitDialog();
// TODO: 在此添加额外的初始化
CFile fl;
if ( !fl.Open( "help.txt ", CFile::modeRead ) )
{
AfxMessageBox( "Can not find help file ");
return FALSE;
}
fl.SeekToBegin();
UINT nFileSize = (UINT)fl.GetLength();
char *file = new char[nFileSize];
fl.Read( file, nFileSize );
fl.Close();
SetDlgItemText( IDC_EDIT_HELP ,file );
delete [] file;
return TRUE; // return TRUE unless you set the focus to a control
// 异常: OCX 属性页应返回 FALSE
}
[解决办法]
UINT nFileSize = (UINT)fl.GetLength();
char *file = new char[nFileSize];
fl.Read( file, nFileSize );
fl.Close();
SetDlgItemText( IDC_EDIT_HELP ,file );
修改为如下的代码
UINT nFileSize = (UINT)fl.GetLength();
char *file = new char[nFileSize+1];
file[ nFileSize ] = 0;
fl.Read( file, nFileSize );
fl.Close();
SetDlgItemText( IDC_EDIT_HELP ,file );
原因很简单,读入的内容并非以0为结尾的字符串,然后系统就一直往后找啊找,直到遇见一个0才停止,并把这些作为字符串显示在按钮上。