在C中删除应用程序中的信息

时间:2012-11-03 05:11:12

标签: c strcmp strcpy

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

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

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

2 个答案:

答案 0 :(得分:0)

如果您在struct fr内删除了所有需要的“信息”,那么您尝试做的事情会稍微简单。

假设它只是一个链表,你需要编写一个删除功能,从链表中删除单个节点

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

答案 1 :(得分:0)

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