我在写,读取和删除文件的内容。除了删除部分以外,其他所有工作都正常,因为当我按y
时,它表示已删除,但不显示任何记录。删除文件内容不起作用
typedef struct ch
{
char str[10];
};
void disp(ch d)
{
cout<<"\n"<<d.str<<"\n";
}
//delete part
cout<<"\nwant to delete??";
char c;
cin>>c;
if(c=='y')
{
char s[10];
cout<<"nter - ";
cin>>s;
file.seekg(0);
int found=0;
fstream temp("temp.dat",ios::in|ios::out|ios::app);
while(file.read((char *)&dta,sizeof(dta)))
{
if(strcmp(dta.str,s)==0)
{
found=1;
cout<<"deleted";
}
else
temp.write((char *)&dta,sizeof(dta));
}
if(!found)
cout<<"not found";
remove("new.dat");
rename("temp.dat","new.dat");
temp.close();
file.open("new.dat",ios::in|ios::out|ios::app);
}
您可能想要在调试器中运行程序,然后逐行执行。你也应该提供'dta'的声明。最后,从文件中删除条目时,应从* original *文件中读取并写入临时文件。 –
删除部分按预期工作,new.dat文件将包含删除的所有记录。 – Alex
你的'typedef'是错的应该是'typedef struct {char str [16]; } ch;',用'-Wall'启用所有警告。 – Alex