刚学结构体遇到的问题


#include<stdio.h>
#define N 3
struct student
{
    char num[10];
    char name[10];
    int CPL;
    int math;
    int English;
    int all;
};
int main()
{
    student stu[3];
    void input(student *p,int n);
    void output(student *p, int n);
    //int allmax(student stu[], int n);
    struct student stu[N], * p = stu;
    input(p, 3);
    output(p, 3);
    //allmax(stu, 3);
    return 0;
}
//
void input(student *p,int n)
{
    for (int i = 0; i < n; i++)
        {
          printf("请输入学号:");
          gets_s("%c",&p->num);
          printf("\n请输入姓名:");
          gets_s("%c", &p->name);
          getchar();
          printf("\n请输入c语言成绩:");
          scanf_s("%d",&p->CPL);
          printf("\n请输入数学成绩:");
          scanf_s("%d", &p->math);
          printf("\n请输入英语成绩:");
          scanf_s("%d", &p->English);
          printf("\n");
          //p++;
        }
}
 void output(student * p, int n)
{
    //表头
    printf("学号\t姓名\tC语言\t数学\t英语\t");
    for (int i = 0; i < n; i++)
    {
        printf("\n%s\t",p->num);
        printf("%s\t",p->name);
        printf("%d\t", p->CPL);
        printf("%d\t", p->math);
        printf("%d\t", p->English);
        p++;
    }
}
![img](https://img-mid.csdnimg.cn/release/static/image/mid/ask/690328871386164.png "#left")


出现了报错,不知道该怎么改。
不知道是哪里出了问题

img

gets_s、scanf_s,都改为 scanf 再试试。
另外,第16、17行要移到 main() 方法外面,放它前面去。
改成这样了:

#include<stdio.h>
#define N 3
typedef struct student
{
    char num[10];
    char name[10];
    int CPL;
    int math;
    int English;
    int all;
}student;
int main()
{
    //student stu[3];
    void input(student *p,int n);
    void output(student *p, int n);
    //int allmax(student stu[], int n);
    struct student stu[N];// * p = stu;
    input(stu, 3);
    output(stu, 3);
    //allmax(stu, 3);
    return 0;
}
//
void input(student *p,int n)
{
    for (int i = 0; i < n; i++)
    {
        printf("请输入学号:");
        scanf("%s", &p->num);
        printf("请输入姓名:");
        scanf("%s", &p->name);
        //getchar();
        printf("请输入c语言成绩:");
        scanf("%d",&p->CPL);
        printf("请输入数学成绩:");
        scanf("%d", &p->math);
        printf("请输入英语成绩:");
        scanf("%d", &p->English);
        printf("");
        p++;
    }
}
void output(student * p, int n)
{
    //表头
    printf("学号\t姓名\tC语言\t数学\t英语\t");
    for (int i = 0; i < n; i++)
    {
        printf("\n%s\t",p->num);
        printf("%s\t",p->name);
        printf("%d\t", p->CPL);
        printf("%d\t", p->math);
        printf("%d\t", p->English);
        p++;
    }
}