c语言文件和链表
struct student *input() //录入学生信息{
FILE *fp;
struct student *head,*p1,*p2,*p;
head=p2=(struct student *)malloc(N);
p1=(struct student *)malloc(N);
printf("请输入学生的信息:(0 0 0 0结束输入)\n学号 姓名 项目 电话\n");
scanf("%s%s%d%d",p1->num,p1->name,&p1->item,&p1->iphone);
while(strcmp(p1->name,"0")!=0)
{
p2->next=p1; //p2始终指向最后一个节点,p1指向新建立的节点
p2=p1;
p1=(struct student *)malloc(N);
scanf("%s%s%d%d",p1->num,p1->name,&p1->item,&p1->iphone);
}
p2->next=NULL; //最后一个节点要指向NULL
fp=fopen("message.txt","wt");
p=head->next;
while(p!=NULL)
{
fprintf(fp,"%s %s %d %d\n",p->num,p->name,p1->item,p1->iphone);
p=p->next;
}
fclose(fp);
return head;
}
为什么while语句外对p1,p2申请了动态存储空间后,在while语句内对p1又进行了申请?
求大神解惑