0

我有一个电话簿应用程序,用户可以输入联系信息,它会显示在电话簿中。我有一个删除功能,允许用户通过姓氏搜索并从电话簿中删除联系人。我的问题是,当我搜索姓氏以删除联系人时,不仅是该联系人,还包括其后的所有联系人。

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函数来覆盖与姓氏相关的联系人中的其余信息,但现在我需要弄清楚为什么它会删除电话簿中的所有其他姓名。想法?

如果需要,我可以发布更多代码或我的输出。谢谢

4

2 回答 2

0

递减后,您必须通过语句(*counter)--退出循环。'break'

于 2012-11-03T05:42:24.587 回答
0

如果您拥有删除所需的所有“信息”,那么您要做的事情会稍微简单struct fr

假设它只是一个链表,您将需要编写一个删除函数,该函数将从链表中删除单个节点

如果它是一个简单的数组,您可以用一堆“默认”值覆盖数据(下次搜索存储空间时可以填充)。

于 2012-11-03T05:25:07.197 回答