建立一个学生链表,删除指定年龄的学生的节点,下面程序为什么不对?

#include
#include
#include
#include

typedef struct student
{
int num;
char name[20];
char sex;
int age;
struct student *next;
}node;

node* creat(void)
{
node * L,*p;
L = (node*)malloc(sizeof(node));
p = L;
int n;
printf("人数:");
scanf("%d",&n);
for(int i = 0;i < n;i++)
{
node newp = (node)malloc(sizeof(node));
scanf("%d,%s,%c,%d",&newp->num,newp->name,&newp->sex,&newp->age);
newp->next = NULL;
p->next = newp;
p = newp;
}

return L;

}

void del(node *L,int n)
{
node *p = L;
while(p->next != NULL)
{
if(p->next->age == n)
{
p->next = p->next->next;
}
else p = p->next;
}
}

void print(node *L)
{
node *p = L->next;
while(p)
{
printf("%d %s %c %d\n",p->num,p->name,p->sex,p->age);
p = p->next;
}
}
void main()
{
node *L1 = creat();

int n;
printf("要删除的年龄:");
scanf("%d",&n);
del(L1,n);
print(L1);

system("pause");

}

#include
#include
#include
#include

typedef struct student
{
int num;
char name[20];
char sex;
int age;
struct student *next;
}node;

node* creat(void)
{
node * L,*p;
L = (node*)malloc(sizeof(node));
L->next = NULL;
p = L;
int n;
printf("人数:");
scanf("%d",&n);
for(int i = 0;i < n;i++)
{
node newp = (node)malloc(sizeof(node));

    scanf("%d %s %c %d",&newp->num,newp->name,&newp->sex,&newp->age);
    newp ->next = NULL;

    p->next = newp;
    p = newp;

    //newp->next = L->next;
    //L->next  = newp;
}

return L;

}

void del(node *L,int n)
{
node *p = L;
while(p->next != NULL)
{
if(p->next->age == n)
{
p->next = p->next->next;
}
else p = p->next;
}
}

void print(node *L)
{
node *p = L->next;
while(p)
{
printf("%d %s %c %d\n",p->num,p->name,p->sex,p->age);
p = p->next;
}
}
void main()
{
node *L1 = creat();

int n;
printf("要删除的年龄:");
scanf("%d",&n);
del(L1,n);
print(L1);

system("pause");

}

看下代码的问题,sex这个单词不好,一般是和那个有关的,应该用gender

我试了下,好像可以啊,有可能是你输入那里的问题,scanf("%d,%s,%c,%d",&newp->num,newp->name,&newp->sex,&newp->age);

为什么输出结果是这样的图片说明