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

内に削除に必要なすべての「情報」がある場合、あなたがやろうとしていることは少し簡単ですstruct fr

リンクリストだけを想定すると、リンクリストから個々のノードを削除する削除関数を作成する必要があります。

単純な配列の場合は、データを一連の「デフォルト」値で上書きできます(次にストレージスペースを検索するときに入力できます)。

于 2012-11-03T05:25:07.197 に答える
0

デクリメントされた後、ステートメント(*counter)--を介してループを終了する必要があります。'break'

于 2012-11-03T05:42:24.587 に答える