链表输入里面出现异常,原因还不知道怎么回事,还请各位大佬帮帮
//下面就是我的代码,程序主要是能编译,但不能运行,会弹出下面图片中的错误。请问是什么原因啊#include <stdio.h>
#include <stdlib.h>
struct Stu
{
char a[20];
int age;
struct Stu *pnext;
};
struct Stu* newhear()
{
struct Stu *ph, *pn, *pe;
int c, d;
printf("请输入总人数:");
scanf_s("%d", &d); //输入总人数便于后面循环
printf("请输入学生的姓名和学号\n");
pe = (struct Stu*)malloc(sizeof(struct Stu)); //为pe分配内存,有人提示我这里需要free,但是因为后面输出还需要,所有这里没有free,我想这应该不是问题所在
scanf_s("%s,%d", pe->a, &pe->age); //输入第一个学生的姓名和学号,这里的scanf必须加上_s,否者报错。
ph = pn = pe; //使第一个学生成为头,同时也是最后一个结构点
pn->pnext = NULL;//使第一个学生成为头,同时也是最后一个结构点
for (c = 1; c < d; c++)
{
pe = (struct Stu*)malloc(sizeof(struct Stu));//重新再分配一个新的空间
scanf_s("%s,%d", pe->a, &pe->age);
pn->pnext = pe; //是上面的pn节点连接到现在的新节点上
pn = pe; //使pn重新指向结构
pn->pnext = NULL; //使下一节点指向为空,便于后面输出识别
}
return ph;//将头结构体返回到主函数中
}
void main()
{
struct Stu *ph;
ph = newhear();
}