排查bug排了半个小时,终于找到原因。下面的代码中node不是动态分配的,函数退出后就会被销毁,最终在main函数中输出的时候一直显示字符串乱码,百思不得其解,数字不知道为什么是对的。最后终于体会到动态内存分配的问题!
void input()
{
while(1)
{
int num,score;
char name[20];
struct stud_node *next;
scanf("%d",&num);
if(num == 0) break;
scanf("%s %d",name,&score);
struct stud_node node;
node.num = num;
node.score = score;
strcpy(node.name,name);
node.next=NULL;
if(head == NULL) head = tail = &node;
else {tail->next = &node;tail = tail->next;}
}
}