我试图允许用户输入姓氏并将其删除,如果有多个姓氏相同的人,则用户可以输入名字并删除该特定个人。我的问题是我无法找到一种方法来允许该函数破译是否有多个具有相同姓氏的联系人。我可以让它在它只识别多个联系人中的第一个或所有多个联系人的情况下工作,但不能同时识别这两种情况。例如。如果我有一个 mike smith、ted smith 和 phil stevens 的列表,我可以让它删除其中一个 smiths,但不删除 stevens,或者我可以让它删除 stevens 而不仅仅是其中一个 smiths。
typedef struct friends_contact{
char *First_Name;
char *Last_Name;
char *home;
char *cell;
}fr;
上面是结构,下面显然是剩下的代码
char delete_contact(fr*friends ,int* counter, int i)
{
char name_search[50]={'\0'};
char name_search3[50]={'\0'};
char Delete[5]={'\0'};
int flag=0;
printf("Search by last name\n");
scanf("%s",name_search);//Name entry
for(i=0;i<*counter;i++)
{
if(strcmp(name_search,friends[i].Last_Name)==0)//Copys over the name entered
flag++;
}
if(flag<=1)
{
strcpy(friends[i].Last_Name,Delete);
printf("Name was deleted");
}
if(flag>1)
{
printf("There is more then 1 " "%s " ",please enter a first name\n",name_search);
scanf("%s",name_search3);
for (i=0;i<*counter;i++)
{
if(strcmp(name_search3,friends[i].First_Name)==0)
{
strcpy(friends[i].First_Name,Delete);
printf("Name was deleted");
}
}
}
free(friends[i].First_Name);
free(friends[i].Last_Name);
free(friends[i].home);
free(friends[i].cell);
}
我试图使用一个标志,该标志计为第一个for
循环循环,但所做的只是计算它搜索联系人列表(或*计数器)的次数。
有没有办法让函数计算有多少类似的姓氏,这样我就可以让程序确定何时需要询问名字,何时不需要?