用函数查询信息,结果和输入的信息不同,求看看

为什么查询出来的信息和输入的信息不一致啊?求指点

void f5()
{
    int k;
    printf("\n                         ***    1.按姓名查找      ***    \n");
    printf("\n                         ***    2.按成员号查找    ***    \n");
    printf("\n                         ***    3.按地址查找      ***    \n");
    printf("\n                         ***    4.按电话号码查找  ***    \n");
    printf("请选择查找方式:");
    scanf("%d",&k);
    list *p;
    switch (k) 
    {
        case 1: p=findbyname();                
                break;
        case 2:    p=findbynum();                
                break;
        case 3:    p=findbyaddress();                
                break;
        case 4:    p=findbyphone();                
                break;
    }
    if (p==NULL)
        printf("查无此人\n");
    else 
    {
        printf("找到该用户!\n");
        show_one(p);
    }    
}
list *findbyname() 
{
    char name[20];
    list *p=NULL;
    printf("请输入成员姓名:");
    scanf("%s",name);
    if (head == NULL) 
    {
        printf("查无此人\n");
        return NULL;
    } 
    else 
    {
        for(p=head;p->next!=NULL;p=p->next) 
        {
            if (strcmp(p->next->name, name)==0)
                return p;
        }
        return NULL;
    }
}
list *findbynum() 
{
    char num[40];
    list *p = NULL;
    printf("请输入成员号:");
    scanf("%s",num);
    if (head==NULL) 
    {
        printf("查无此人\n");
        return NULL;
    } 
    else
    {
        for(p=head;p->next!=NULL;p=p->next) 
        {
            if (strcmp(p->next->num,num)==0)
                return p;
        }
        return NULL;
    }
}
list *findbyaddress() 
{
    char address[40];
    list *p = NULL;
    printf("请输入成员地址:");
    scanf("%s",address);
    if (head==NULL) 
    {
        printf("查无此人\n");
        return NULL;
    } 
    else 
    {
        for(p=head;p->next!=NULL;p=p->next) 
        {
            if (strcmp(p->next->address,address)==0)
                return p;
        }
        return NULL;
    }
}
list *findbyphone() 
{
    char phone[20];
    list *p = NULL;
    printf("请输入成员电话号码:");
    scanf("%s",phone);
    if (head==NULL) 
    {
        printf("查无此人\n");
        return NULL;
    } 
    else
    {
        for(p=head;p->next!=NULL;p=p->next) 
        {
            if (strcmp(p->next->phone,phone)==0)
                return p;
        }
        return NULL;
    }
}

结果如图

img