c语言中的链表出了些小问题,运行程序是会卡死
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include"struct.h"//专门存放结构体
void register_show();
void success_show();
void order_check_show();
void no_order_show(); //都为显示函数 无影响
int register_add(peo *a,peo *b)
{
system("cls");
register_show();
int career;
scanf("%d",&career);
peo *pnew,*p;//想用链表
pnew=(peo *)malloc(sizeof(peo));
p=(peo *)malloc(sizeof(peo));
scanf("%s",pnew->id);
fflush(stdin);
scanf("%s",pnew->name);
fflush(stdin);
if(a==NULL)
{
a=pnew;
}
else
{
p=a;
while(p!=NULL)
{
if(strcmp(p->id,pnew->id)==0)
{
printf("此账号已经被注册!");
return 0;
}
p=p->next;
}
p=pnew;
pnew->next=NULL;
}
p=a;
while(p!=NULL)
{
printf("%s",p->id);
p=p->next;
}
free(p);
free(pnew);
system("cls");
success_show();
system("pause");
return 1;
}
/*typedef struct people{
char name[10];
char id[10];
struct people * next;
}peo; */
//结构体如上
我想用建立一个链表来存储我的人员信息,但是每次存完发现最多只有一个人员的信息(就是存了两个就会发现其中一个信息没了)。
so我就想输出出来看我保存的东西是不是有问题,结果现在发现这个程序就直接卡死了。(×_×)
这个就有意思了,凭我的直觉,一定是我的链表或定义出了问题,但是奈何我这个大萌新是真的找不到什么错误(好吧!其实是学业不精,链表里面的一些注意点没学会)叹气!
现在我只能求助于各位大神,希望大家能够帮我看看到底是出了什么问题,当然顺便再和我说说关于c语言的链表的知识就更好了(当然,我是绝对不敢要求各为大佬的,只是我的一个小小的请求)最后 拜托了 希望大佬们把我从害怕链表的日子里救出来吧!!!