c语言:结构体循环输入运行后就只能输入一次,因为name我没有定义成数组,输入的时候都只输入了一个字符,问题应该在scanf_s附近

运行后就只能输入一次,然后就结束运行了,因为name我没有定义成数组,输入 的时候都只输入了一个字符,可还是不行,哥们帮我看看,问题应该在scanf_s附近。

#include<stdio.h>

struct student
    {
        int num;//学号
        char name;//姓名
            int wy;//外语
            int zz;//政治
            int sx;//数学
            int zzk;//英语
        int max;//总分
        char pop;//复试
    }stu[5];


void Cal_Mark()
{
    
    int i = 0;
    for (i=0;i<5;i++)
    {
        if (stu[i].wy >= 45 || stu[i].zz >= 45 || stu[i].sx >= 75 || stu[i].zzk >= 75)
        {
            stu[i].pop = 'P';
        }
        else
        {
            stu[i].pop = 'F';
        }
    }
}
void SelectionSort()
{
    struct student *t;
    int i, j;
    for (i = 0; i < 4; i++)
    {
        for (j = 0; j < 4 - i; j++)
        {
            if (stu[j].max < stu[j].max)
            {
                struct student *p1, *p2;
                p1= &stu[j];
                p2= &stu[j+1];
                t = p1;
                p1 = p2;
                p2 = t;
            }
        }
    }
}
int main()
{
    int i = 0;
    printf("请输入学生信息,顺序为|姓名|学号|外语|政治|数学|英语|");
    for (i = 0; i < 5; i++)
    {
        
        scanf_s("%c%d%d%d%d%d",&stu[i].name, &stu[i].num, &stu[i].wy, &stu[i].zz, &stu[i].sx, &stu[i].zzk);
        stu[i].max = stu[i].wy + stu[i].zz + stu[i].sx + stu[i].zzk;
    }
    Cal_Mark();
    SelectionSort();
    for (i = 0; i < 5; i++)
    {
        printf("姓名   学号   外语   政治   数学   英语  总分  复试情况");
        printf("%c   %d     %d    %d    %d    %d    %d    %c", stu[i].name, stu[i].num, stu[i].wy, stu[i].zz, stu[i].sx, stu[i].zzk, stu[i].max, stu[i].pop);
    }
}

稍微修改以下:

#include<stdio.h>
struct student {
    int num;//学号
    char name[20];//姓名
    int wy;//外语
    int zz;//语文
    int sx;//数学
    int zzk;//英语
    int max;//总分
    char pop;//复试
} stu[5];

void Cal_Mark() {
    int i = 0;
    for (i = 0; i < 5; i++) {
        if (stu[i].wy >= 45 || stu[i].zz >= 45 || stu[i].sx >= 75 || stu[i].zzk >= 75) {
            stu[i].pop = 'P';
        } else {
            stu[i].pop = 'F';
        }
    }
}
void SelectionSort() {
    struct student *t;
    int i, j;
    for (i = 0; i < 4; i++) {
        for (j = 0; j < 4 - i; j++) {
            if (stu[j].max < stu[j].max) {
                struct student *p1, *p2;
                p1 = &stu[j];
                p2 = &stu[j + 1];
                t = p1;
                p1 = p2;
                p2 = t;
            }
        }
    }
}
int main() {
    int i = 0;
    printf("请输入学生信息,顺序为|姓名|学号|外语|语文|数学|英语|\n");
    for (i = 0; i < 5; i++) {
        scanf("%s%d%d%d%d%d", stu[i].name, &stu[i].num, &stu[i].wy, &stu[i].zz, &stu[i].sx, &stu[i].zzk);
        stu[i].max = stu[i].wy + stu[i].zz + stu[i].sx + stu[i].zzk;
    }
    Cal_Mark();
    SelectionSort();
    printf("姓名   学号   外语   语文   数学   英语  总分  复试情况\n");
    for (i = 0; i < 5; i++) {
        
        printf("%s   %d     %d    %d    %d    %d    %d    %c\n", stu[i].name, stu[i].num, stu[i].wy, stu[i].zz, stu[i].sx, stu[i].zzk, stu[i].max, stu[i].pop);
    }
}