我设法搜索姓名,电话号码。但它也会打印"名称未找到"只要for循环循环。
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!");
}
}
我应该在哪里放置&#39; printf(&#34;找不到姓名!&#34;)&#39;?
答案 0 :(得分: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
此时仍为假时,我才会将未找到的打印件移出到循环外部。