Вот функция, которая удаляет определенную запись из двоичного файла, но эта функция копирует последнюю запись дважды и, если она выполняется снова, она копирует ее три раза и так далее. Как я могу это исправить?Моя программа на 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
Прочтите [ask]. Твой вопрос совсем не хватает. – dandan78