为什么查询出来的信息和输入的信息不一致啊?求指点
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;
}
}
结果如图