首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

CFile类的读取有关问题

2012-03-17 
CFile类的读取问题我在使用CFile类读取一个文本文件的时候,却意外读出了莫名其妙的数据,求高手帮忙看一下:

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

热点排行