请问我的这一段代码哪里有问题

img

img


在输入所查找学生姓名之后回车程序就结束了,请问是哪里出问题了?

函数传参把【】中的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函数输出正常么?