gpt4 book ai didi

c++ - 我应该如何更改此功能以删除 1 个特定条目(姓名和电话号码),而不是整个记录(此功能当前正在执行)?

转载 作者:行者123 更新时间:2023-11-30 05:16:47 25 4
gpt4 key购买 nike

void delete_record(){
char num[15];
int found=0;
ifstream delet("phone.dat",ios::binary);
ofstream ooo("temp.dat:",ios::binary);
cout<<"Enter number to delete:";
cin>>num;
delet.seekg(0,ios::beg);
while(delet.read((char*)&rec,sizeof(rec))){
if(strcmp(num,rec.phone)==0){
found=1;
cout<<"Name:"<<rec.name<<"\t"<<"Number:"<<rec.phone<<endl;
sleep(5);
cout<<"\nNumber Deleted:";
}
if(strcmp(num,rec.phone)!=0)
ooo.write((char*)&rec,sizeof(rec));
if(found==0)
cout<<"Record not found:";
ooo.close();
delet.close();
remove("phone.dat");
rename("temp.dat","phone.dat");
getch();
}

我正在尝试使用 cpp 和文件处理制作一个计算机化电话目录,我想制作一个函数来删除特定条目(姓名、相应的电话号码)而不是该特定文件中的全部数据。请帮助我这样做。

最佳答案

你在那里犯了几个错误。检查我在代码中的评论。

void delete_record() 
{
char num[15];
int found = 0;
ifstream delet("phone.dat", ios::binary);
ofstream ooo("temp.dat", ios::binary); // extra ':'
cout << "Enter number to delete:";
cin >> num;
delet.seekg(0, ios::beg);
while (delet.read((char*)&rec, sizeof(rec)))
{
found = 0; // set back to 0
if (strcmp(num, rec.phone) == 0)
{
found = 1;
cout << "Name:" << rec.name << "\t" << "Number:" << rec.phone << endl;
sleep(5);
cout << "\nNumber Deleted:";
}

if (strcmp(num, rec.phone) != 0)
ooo.write((char*)&rec, sizeof(rec));

if (found == 0)
cout << "Record not found:";
}
// this has to be out of while scope
ooo.close();
delet.close();
remove("phone.dat");
rename("temp.dat", "phone.dat");
getch();
}

还有我的建议:

  • 学习如何使用调试器逐步调试和检查代码。
  • 写出漂亮的代码。如果您可以轻松阅读它,那么您可以更快地找到错误(例如,应该在 while 之外的代码)

关于c++ - 我应该如何更改此功能以删除 1 个特定条目(姓名和电话号码),而不是整个记录(此功能当前正在执行)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42468219/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com