关于C语言中malloc函数的问题
我在写一个学生管理系统的时候用malloc开辟一个结构体大小的内存,结构体里面存的是学生信息,使用了链表,将最后一个链表的next指向了空,但在我写显示学生信息的函数时,用了一个while(p!=NULL),但是这个限制条件好像没起作用,还是进到循环体的内部了,具体代码如下*STU *tianjia(STU *head,int m)
{
STU *p = NULL,*ps = head;
p = (STU *)malloc(sizeof(STU));
int i;
if(p == NULL)
{
printf("没有开辟出足够的内存,请重新尝试");
exit(0);
}
if(head == NULL)
{
head = p;
}
else
{
while(ps->next!=NULL)
{
ps = ps->next;
}
ps->next = p;
}
ps = p;
printf("请输入数据\n");
printf("请输入学生学号");
scanf("%d",&p->number);
printf("请输入学生姓名");
scanf("%s",p->name);
printf("请输入学生各科成绩\n");
for(i=0;i<m;i++)
{
printf("请输入科目%d的成绩",i+1);
scanf("%d",&p->score[i]);
}
ps->next==NULL;
return head;
}这是写入的函数
void ShuChu(STU *head,int m)
{
STU *p=head;
if(head==NULL)
{
printf("对不起,此时无任何学生信息");
exit(0);
}
int i;
printf(" 学号 姓名");
for(i=0;i<m;i++)
{
printf(" 课程%d",i+1);
}
printf(" 总分 平均分\n");
printf(" %3d %s",p->number,p->name);
while(p!=NULL)
{
if(p==NULL)
{
printf("输出结束");
}
else
{
for(i=0;i<m;i++)
{
printf(" %3d",p->score[i]);
}
printf(" %4d %5f\n",p->sum,p->average);
p = p->next;
}
}
}
这是显示的函数
当输出时他有把写进去的内容输出出来,但是输完之后程序就被操作系统给安乐死了
请教高手!!!!!!!!!!急啊!!!!!!!!