小白求助,用c做的学生管理系统输出函数不显示

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


struct Student
{
    int m_id;
    char name[40];
    int age;
    struct Student* next;
};

//对链表进行输出
void Print_link(struct Student* head)
{
    struct Student* p;
    p = head;
    printf("ID\t姓名\t年龄\n");
    for (p = head->next; p != NULL; p = p->next)
    {
        printf("%d\t%s\t%d\n", p->m_id, p->name, p->age);
    }
}

//对链表赋值
void Set_list(struct Student* t,int i)
{
    printf("请输入第%d学生的ID值:\n",i);
    scanf_s("%d", &t->m_id);

    getchar();//用于接收回义字符
    printf("请输入第%d学生的姓名:\n", i);
    gets_s(t->name);

    printf("请输入第%d学生的年龄:\n", i);
    scanf_s("%d", &t->age);
}


//创建链表
struct Student* Creak_link()
{
    //创建头指针
    struct Student* head = NULL;
    //指向本指针
    struct Student* p = NULL;
    //指向下一个节点
    struct Student* q = NULL;
    //创建一个结构体
    head = (struct Student*)malloc(sizeof(struct Student));
    p = head;

    int i = 0;
    int j = 0;

    printf("请问你想创建几个学生?\n");
    scanf_s("%d", &j);

    while(j == 0 || j < 0 )
    {
        printf("不能输入错误数字!\n");
        printf("请问你想创建几个学生?\n");
        scanf_s("%d", &j);
    }

    for (i = 0; i < j; i++)
    {
        q = (struct Student*)malloc(sizeof(struct Student));
        Set_list(q,i+1);
        p->next = q;
    }

    //尾指针处理
    p->next = NULL;
    return head;
}

//主函数
void main()
{
    //实例化一个结构体
    struct Student* head = NULL;

    head = Creak_link();

    Print_link(head);
}

图片说明

https://blog.csdn.net/u012187684/article/details/38032693