动态构造存放学生信息的结构体数组问题运行求解

写了个C的程序,大伙们,看看我的代码有什么问题?是一个动态构造存放学生信息的结构体数组问题,照着书敲的,运行后输入name后按回车就没有下文了,我真麻了,问了gpt,gpt也说没有问题。ide是vs2022

#include<stdio.h>
#include<stdlib.h>

struct STUDENT
{
    char name[20];
    int age;
    float score;
};

void InputStudent(int len, struct STUDENT* p);
void BubbleSort(int len, struct STUDENT* p);
void OutputStudent(int len, struct STUDENT* p);

int main(void)
{
    int len;
    struct STUDENT* p = NULL;
    printf("请输入学生的个数:");
    scanf_s("%d", &len);

    p = malloc(len * sizeof * p);

    InputStudent(len, p);
    BubbleSort(len, p);
    OutputStudent(len, p);

    free(p);

    return 0;
}

void InputStudent(int len, struct STUDENT* p)
{
    int i;

    for (i = 0; i < len; i++)
    {
        printf("请输入第%d个学生的信息:\n", i + 1);
        printf("name = ");
        scanf_s("%s", (p + i)->name);

        printf("age = ");
        scanf_s("%d", &(p + i)->age);

        printf("score = ");
        scanf_s("%lf", &(p + i)->score);
    }

    printf("\n");

    return;
}

void BubbleSort(int len, struct STUDENT* p)
{
    struct STUDENT buf;
    int i, j;
    for (i = 0; i < len - 1; i++)
    {
        for (j = 0; j < len - 1 - i; ++j)
        {
            if ((p + j)->score < (p + j + 1)->score)
            {
                buf = *(p + j);
                *(p + j) = *(p + j + 1);
                *(p + j + 1) = buf;
            }
        }
    }

    return;
}

void OutputStudent(int len, struct STUDENT* p)
{
    int i;
    printf("按成绩高低输出学生信息:\n\n");

    for (i = 0; i < len; i++)
    {
        printf("第%d个学生的信息是:\n", i+1);
        printf("name = %s\n", (p + i)->name);
        printf("age = %d\n", (p + i)->age);
        printf("score = %lf\n", (p + i)->score);
    }

    return;
}

提前感谢了,谢谢大伙!

【以下回答由 GPT 生成】

我会尽力帮你解决问题,请提供你的代码,以及你认为可能出错的地方。



【相关推荐】



如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^