ユーザーが姓を入力して削除できるようにしようとしています。同じ姓の人が複数いる場合、ユーザーは名を入力してその特定の個人を削除できます。私の問題は、同じ姓の連絡先が複数存在するかどうかを機能が解読できるようにする方法を理解できないことです。複数の連絡先の最初の連絡先、またはすべての複数の連絡先のみを認識する場合に機能させることができますが、両方のシナリオは認識できません。例のために。マイク・スミス、テッド・スミス、フィル・スティーブンスのリストがある場合、スミスの 1 人を削除してスティーブンを削除しないようにするか、スティーブンだけを削除してスミスの 1 人だけを削除しないようにすることができます。
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
が、連絡先のリスト (または * カウンター) を検索する回数をカウントするだけです。
姓のようなものがいくつあるかを関数でカウントする方法はありますか