读书人

CFile类的读取有关问题

发布时间: 2012-03-17 19:06:28 作者: rapoo

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才停止,并把这些作为字符串显示在按钮上。

读书人网 >C++

热点推荐