2017-09-24 18 views
0

名前と電話番号を検索することができます。 forループがループするたびに「Name not found」も表示されます。構造(検索)

void search(Contact *p, int size, char *tsearch) 
{ 
    int i = 0; 
    for(i = 0; i < size; i++){ 
     if(strcmp(p[i].name, tsearch) == 0){ 
      printf("Name = %s, Tel = %s \n", p[i].name, p[i].telno); 
     } 
     else 
      printf("Name not found!"); 
    } 
} 

ここで 'printf( "名前が見つかりません!")'を配置する必要がありますか?

+0

[forループで1つの結果を表示する方法](https://stackoverflow.com/questions/45847535/how-to-display-one-result-in-for-loop) – melpomene

+0

いずれかの可能性があります検索の結果を意味する '' flag''セットは 'for'ループの外側に" not found "メッセージを出力するためにチェックできます。また、検索結果が1つしかない場合は、結果の 'printf'の後に改行を入れることができます。見つからない条件は 'i == size'となります。 –

答えて

1

2点。 1名前を見つけたら検索を停止します。 2.名前が見つからない場合(現在のセルだけではない)にのみ印刷します。

void search(Contact *p, int size, char *tsearch) 
{ 
    int i = 0; 
    boolean found = false; 
    for(i = 0; i < size && !found; i++){ 
     if(strcmp(p[i].name, tsearch) == 0){ 
      printf("Name = %s, Tel = %s \n", p[i].name, p[i].telno); 
      found = true; 
     } 
    } 
    if (!found) 
    { 
     printf("Name not found!"); 
    } 
} 

私は値が見つかったかどうかを示し、それが後にループを停止するフラグfoundを追加しました注意してください。そして、見つからなかったプリントをループ外に移動したのは、この時点でfoundがまだfalseの場合だけです。

関連する問題