void CMy2Dlg::OnBUTTONsave() 
{
// TODO: Add your control notification handler code here
FILE* ip = fopen("everett","wb");
if(!ip)
{
MessageBox("nothing");
return;
}
else
{
int a = 0;
while(a<m_access.GetItemCount())
{
CString st1,st2,st3;
st1 = m_access.GetItemText(a,0);
fwrite(&st1,sizeof(CString),1,ip);
st2 = m_access.GetItemText(a,1);
fwrite(&st2,sizeof(CString),1,ip);
st3 = m_access.GetItemText(a,2);
fwrite(&st3,sizeof(CString),1,ip);
a++;
}
fclose(ip);
}
}
void CMy2Dlg::OnBUTTONread() 
{
// TODO: Add your control notification handler code here
m_access.DeleteAllItems();
if(m_access.DeleteAllItems())
{
FILE* ip = fopen("everett","rb");
if(!ip)
{
MessageBox("nothing");
return;
}
else
{
int a =0;
while(!feof(ip))
{
CString st1,st2,st3;
fread(&st1,sizeof(CString),1,ip);//为什么读不进去呢?大家帮帮忙看看这是一个读取保存过的文件 读到链表
fread(&st2,sizeof(CString),1,ip);//
fread(&st3,sizeof(CString),1,ip);//
m_access.InsertItem(a,st1);
m_access.SetItemText(a,1,st2);
m_access.SetItemText(a,2,st3);
a++;
}
fclose(ip);
}
}
else
{
MessageBox("delete wrong");
}}

解决方案 »

  1.   

    首先,sizeof(CString) == 4, 你应该用 CString::GetLength();
    fwrite(&st1....),fread(&st1....)这样写,写入的是CString实例,而不是CString的内容
    建议改用char*
      

  2.   

    什么叫CString实例啊?举一个简单的例子??谢谢
      

  3.   

    什么叫CString实例啊?能举个例子吗?谢谢 sizeof(CString) == 4我这样用的话求的是什么的长度呢?
      

  4.   

    简单的说,CString是一个类,而 不是一个字符串
      

  5.   

    为什么 我这样写的时候在我点击read按键的时候程序好像进入的死循环啊???这是为啥啊?