我有一个电话簿应用程序,用户可以输入联系信息,它将显示在电话簿中。我有一个删除功能,允许用户通过姓氏搜索并删除电话簿中的联系人。我的问题是,当我搜索姓氏以删除联系人时,不仅是该联系人,还包括其后的所有联系人。
void delete_contact(fr*friends ,int* counter, int i)
{
char name_search[50]={'\0'};
char Delete[5]={'\0'};
printf("Search by last name\n");
scanf("%s",name_search);
for(i=0;i<*counter;i++)
{
if(strcmp(name_search,friends[i].Last_Name)==0)
{
strcpy(friends[i].Last_Name,Delete);
(*counter)--;
}
}
}
现在我意识到我需要再编写一些strcpy
函数来覆盖与姓氏相关的联系人中的其他信息,但是现在我需要弄清楚为什么它会删除所有其他电话簿中的姓名。想法?
如果需要,我可以发布更多代码或输出。感谢
答案 0 :(得分:0)
如果您在struct fr
内删除了所有需要的“信息”,那么您尝试做的事情会稍微简单。
假设它只是一个链表,你需要编写一个删除功能,从链表中删除单个节点
如果它是一个简单的数组,您可以用一堆“默认”值覆盖数据(可以在下次搜索存储空间时填充)。
答案 1 :(得分:0)
在(*counter)--
递减后,您必须通过'break'
语句退出循环。