c语言向链表输入元素,C语言链表输入元素时赋值有关问题

C/C++ code//目的:输入学号,姓名,性别.然后再输出

#include

#include

struct goo

{

char Student_number[10];

char name[20];

char sex[10];

float money;

};

typedef struct node

{

struct goo data;

struct node *link;

}linklist,Node;

void add(linklist*);

void show(linklist*);

void main()

{

linklist *head;

head=(linklist*)malloc(sizeof(linklist));

head->link=NULL;

add(head);

show(head);

}

void add(linklist* head)

{

Node *q;

char sn[10];

char n[20],s[10];

q=(Node*)malloc(sizeof(Node));

printf("Please enter student number:");

scanf("%d",&sn);

q->data.Student_number=sn; //有错,Why?

printf("Please enter name:");

scanf("%s",&n);

q->data.name=n; //有错,Why?

printf("Please enter sex:");

scanf("%s",&s);

q->data.sex=s; //有错,Why?

q->link=head->link;

head->link=q;

}

void show(linklist *head)

{

Node *p;

p=head->link;

while(p!=NULL)

{

printf("Student number:%d\n",p->data.Student_number);

printf("name:%s\n",p->data.name);

printf("sex:%s\n",p->data.sex);

}

}