我在Visual Studio 2008中使用C++語言和MFC文件創建了一個程序。它是一個圖形用戶界面,它使用C++的文件處理將學生記錄存儲在文件中。它正常工作,並顯示或添加記錄,但是當我嘗試修改和刪除記錄時,它會在運行時給我一個斷言錯誤。運行程序期間聲明錯誤
請幫我一把。
我用來修改和刪除記錄的函數代碼在這裏。
void modifyrec()
{
Invalidate();
bool found;
struct student e;
getname_dialog diag;
if(diag.DoModal()==IDOK)
{
found = false;
fp.SeekToBegin();
while(fp.Read(&e,sizeof(e))>=sizeof(e))
{
if(e.batch_no==g_batchno && strcmp(e.name,g_name)==0)
{
found = true;
break;
}
}
if(found == true)
{
modify_dialog mdiag(e);
mdiag.DoModal();
}
else
MessageBox("Record Not Found","Modify Record....");
}
}
void delrec()
{
bool foun;
struct student e;
Invalidate();
getname_dialog diag;
if(diag.DoModal()==IDOK)
{
found = false;
fp.SeekToBegin();
CFile ft("temp.dat",CFile::modeCreate | CFile:modeWrite);
while(fp.Read(&e,sizeof(e))>= sizeof(e))
{
if(e.batch_no==g_batchno && strcmp(e.name,g_name)==0)
{
found = true;
break;
}
}
if(found == true)
{
modify_dialog mdiag(e);
mdiag.DoModal();
}
else
MessageBox("Record Not Found","Delete Record....");
fp.Close();
ft.Close();
CFile::Remove("students.dat");
CFile::Rename("temp.dat","student.dat");
fp.Open("students.dat",CFile::modeCreate |CFile::modeNoTruncate |CFile::modeReadWrite);
}
}
斷言錯誤說什麼!看看代碼,我可以看到在delrec中的邏輯錯誤,但沒有任何會導致斷言錯誤。 – john
答案似乎在未顯示的代碼中。 –
我會立即粘貼整個程序代碼,如果你們說或者它是有用的告訴錯誤 – sam