#include<stdio.h>
#include<string.h>
#include<malloc.h>
struct student
{
char name [10];
char number[10];
int store;
char age[20];
char gender[8];
};
void input(struct student * p)
{
int i;
for(i=0;i<4;i++)
{
printf("请输入姓名(退出输入quit):");
gets((*(p+i)).name);fflush(stdin);
if(!strcmp((*(p+i)).name,"quit"))break;
printf("请输入学号:");
gets((*(p+i)).number);fflush(stdin);
printf("请输入成绩:");
scanf("%d",&((*(p+i)).store));fflush(stdin);
printf("请输入年龄:");
gets((*(p+i)).age);fflush(stdin);
printf("请输入性别:");
gets((*(p+i)).gender);fflush(stdin);
}
}
void print(struct student * p)
{
int i=0;
for(;(i<4)&&(strcmp((*(p+i)).name,"quit"));i++)
printf
("\name:%-10s nnumber:%-10s\nstore:%-10s age:%-20s\ngender:%-10s\n",(*(p+i)).name,
(*(p+i)).number,(*(p+i)).store,(*(p+i)).age,(*(p+i)).gender);
}
int search(struct student * p,char * num)
{
int i;
for(i=0;i<=4;i++)
if(strcmp(num,(p+i)->name)==0)break;
return (i);
}
int main()
{
int i;
struct student group[5];
char num[10];
input(group);
printf("\n");
print(group);
printf("\n\n请输入要查找的姓名:");
gets(num);
i=search(group,num);
if(i==4)
printf("查无此人");
else
printf("\name:%-10s nnumber:%-10s\nstore:%-10s age:%-20s \ngender:%-10s \n\n\n",(*(group+i)).name,
(*(group+i)).number,(*(group+i)).store,(*(group+i)).age,(*(group+i)).gender);
return 0;
}
你这段代码中的问题可能是因为在输入学生信息时使用了gets函数,而这个函数存在安全隐患。在一些编译器中,会提示警告信息,建议你使用更加安全的函数替代。
另外,在search函数中,参数num应该是一个字符串类型,但是在函数体内却被当做字符类型来比较。这样会导致无法正确查找到学生信息。应该将其改为字符串类型,并使用strcmp函数进行比较。
下面是我修改后的代码:
你可以参考一下