函数传参把【】中的3都删掉,参数直接用struct student stu[]就可以了
scanf读取数据的时候,char数组前面的&都删掉,如下:
代码修改如下:
#include <stdio.h>
#include <string.h>
//因为函数的实现在main函数下面,所以函数要先声明
void input(struct student stu[]);
void print(struct student stu[]);
void search(struct student stu[]);
struct student
{
char studentName[10];
int studentID;
int age;
char strudentSex[4];
char addr[10];
};
int main()
{
struct student stu[3];
input(stu);
print(stu);
search(stu);
//加两句getchar(),避免窗口一闪而过
getchar();
getchar();
return 0;
}
void input(struct student stu[])
{
printf("请输入第一个学生的信息:");
scanf("%s%d%d%s%s",stu[0].studentName,&stu[0].studentID,&stu[0].age,stu[0].strudentSex,stu[0].addr);
printf("请输入第二个学生的信息:");
scanf("%s%d%d%s%s",stu[1].studentName,&stu[1].studentID,&stu[1].age,stu[1].strudentSex,stu[1].addr);
printf("请输入第三个学生的信息:");
scanf("%s%d%d%s%s",stu[2].studentName,&stu[2].studentID,&stu[2].age,stu[2].strudentSex,stu[2].addr);
}
void print(struct student stu[])
{
int i;
for (i=0;i<3;i++)
{
printf("姓名:%s\n",stu[i].studentName);
printf("学号:%d\n",stu[i].studentID);
printf("年龄:%d\n",stu[i].age);
printf("性别:%s\n",stu[i].strudentSex);
printf("地址:%s\n",stu[i].addr);
printf("---------------------------------\n");
}
}
void search(struct student stu[])
{
int j;
char sname[10];
printf("所要查找学生姓名:"); //这里的sname不需要
gets(sname);
for (j=0;j<3;j++)
{
if (strcmp(stu[j].studentName,sname)==0)
{
printf("姓名:%s\n",stu[j].studentName);
printf("学号:%d\n",stu[j].studentID);
printf("年龄:%d\n",stu[j].age);
printf("性别:%s\n",stu[j].strudentSex);
printf("地址:%s\n",stu[j].addr);
break;
}
}
//这里添加判断
if (j==3)
{
printf("未找到该学生信息\n");
}
}
上一句print函数输出正常么?