我设法搜索名称和电话号码。但是,每当有循环循环时,它也会打印"未找到"。
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("找不到名字!")'?
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
仍然是错误的情况下,我将未发现的打印移到了循环外部。