结构(搜索)

时间:2017-09-24 14:26:57

标签: c

我设法搜索姓名,电话号码。但它也会打印"名称未找到"只要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;?

1 个答案:

答案 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此时仍为假时,我才会将未找到的打印件移出到循环外部。