一个关于listcontrol读取txt文件的有关问题

一个关于listcontrol读取txt文件的问题
listcontrol有三列(姓名,性别,班级),通过button读取txt文件n行数据,每行一条数据(张三 男 2班),以空格隔开。我的代码如下,可是始终不行,调了半天了,大神哥哥们帮帮我

void CStudentDemoDlg::OnBnClickedRead()
{
// TODO: 在此添加控件通知处理程序代码
BOOL end=FALSE;
char p[100];
int row=0,column=0;

fstream infile("student.txt",ios::in);
if (!infile)
{
MessageBox("你没有保存过信息!");
return;
}
while (1)
{
m_ListData.InsertItem(m_ListData.GetItemCount(),NULL,NULL);
for (column=0;column<3;column++)
{
if (!(infile>>p))
{
end =TRUE;
}
m_ListData.SetItemText(row,column,p);
}
row++;
/*if (end==TRUE)
{
break;
}*/
}
infile.close();
}

------解决方案--------------------
m_ListData Head 有没有初始化:
BOOL InitLvHead(HWND hwndListView)
{
LV_COLUMN   lvColumn;
int         i;
TCHAR       szString[5][20] = {  TEXT("Column 1"), 
                                 TEXT("Column 2"), 
                                 TEXT("Column 3"), 
                                 TEXT("Column 4"), 
                                 TEXT("Column 5")};

//initialize the columns
lvColumn.mask = LVCF_FMT 
------解决方案--------------------
 LVCF_WIDTH 
------解决方案--------------------
 LVCF_TEXT ;
lvColumn.fmt = LVCFMT_LEFT;
lvColumn.cx = 80;
for(i = 0; i < 5; i++)
{
lvColumn.pszText = szString[i];
SendMessage(hwndListView, LVM_INSERTCOLUMN, (WPARAM)i, (LPARAM)&lvColumn);
}
//
return TRUE;
}//

------解决方案--------------------
  /*if (end==TRUE)
        {
            break;
        }*/     
为什么不要了。while(1) 如何退出?
/////
#include <fstream.h>
void ReadText()
{
BOOL end=FALSE;
char p[1024];
int  row=0,column=0;

fstream infile("student.txt",ios::in);
if (!infile)
{
return;
}
while (1)
{
// m_ListData.InsertItem(m_ListData.GetItemCount(),NULL,NULL);
for (column=0; column < 3; column++)
{
if (!(infile>>p))
{
end =TRUE;
break;
}
afxDump << p << "\n";
//m_ListData.SetItemText(row,column,p);
}
row++;
if (end==TRUE)
{
break;
}
       
}
infile.close();
}
每问题的