弄了几个小时了,求求大佬们看看怎么弄

#include <stdio.h>
#include <malloc.h>
struct student
{
    int age;
    float score;
    char name[20];
};
void h(int len, struct student* p)
{
    int i;
    for (i = 0; i < len; i++)
    {
        printf("第%d个学生的信息是:\n", i + 1);
        printf("age = %d\n", p[i].age);
        printf("score = %f\n", p[i].score);
        printf("name = %s\n", p[i].name);
        printf("\n");
        
    }
}
void g(int len, struct student* p)
{
    int i, j;
    struct student t;
    for (i = 0; i < len - 1; i++)
    {
        for (j = 0; j < len - 1 - i; j++)
        {
            if (p[j].score > p[j + 1].score)
            {
                t = p[j];
                p[j] =p[j + 1];
                p[j + 1] = t;
            }
        }
    }

}
void f(int len, struct student* p)
{
    int i;
    for (i = 0; i < len; i++)
    {
        printf("请输入学生%d的信息:\n", i + 1);
        printf("score = ");
        scanf_s("%f", &p[i].score);
        printf("age = ");
        scanf_s("%d", &p[i].age);
        printf("name = ");
        scanf_s("%s",p[i].name);
        
    }
    printf("\n学生的信息是(以成绩升序排列);\n");
}
int main(void)
{
    int len;
    struct student* p;
    printf("请输入学生个数:");
    scanf_s("%d", &len);
    p = (struct student*)malloc(len*sizeof(struct student));
    f(len, p);
    g(len, p);
    h(len, p);

    return 0;

}

求求大佬们看看吧

 

在devc++里运行正常,在这里就出毛病

我试了一下

用的是VS2012的编译器,

把 void f(int len, struct student* p)函数中的scanf_s("%s",p[i].name);改为scanf("%s",p[i].name);就可以了