-3
以下是從二進制文件中刪除特定記錄的功能,但是此功能會複製最後一個記錄兩次,如果再次執行,則會將其複製三次,等等。我怎樣才能解決這個問題?我的C++程序不能正常工作,因爲它應該是.P.S它是二進制文件
void remove()
{
clrscr();
char found='f',confirm='n'; int eno;
fstream fi,fo;
cout<<"ENTER ID TO BE DELETED - "; cin>>eno;
fi.open("custo.dat",ios::binary|ios::in);
fo.open("musk.dat",ios::binary|ios::out);
while(!fi.eof())
{
fi.read((char*)&c,sizeof(c));
if(c.retid()==eno)
{
c.showdata();
found='t';
cout<<"\nDELETE THIS RECORD? - "; cin>>confirm;
if(confirm=='n'||confirm=='N')
fo.write((char*)&c,sizeof(c));
else if(confirm=='y'||confirm=='Y')
cout<<"\nRecord Deleted!\n";
}
else
fo.write((char*)&c,sizeof(c));
}
if(found=='f')
cout<<"ERROR! RECORD NOT FOUND.";
fi.close();fo.close();
remove("custo.dat");
rename("musk.dat","custo.dat");
cout<<endl;
fi.open("custo.dat",ios::in);
cout<<"\nRECORDS - \n";
while(fi.read((char*)&c,sizeof(c)))
{
c.showdata();
}
fi.close();
}
顯示'c'的類聲明。我期望'c'不是POD類型,所以你需要序列化。 – drescherjm
也請格式化您的代碼的可讀性。 – Dai
閱讀[問]。你的問題已經不復存在了。 – dandan78