这是我写的一段代码,它在链表中添加了人的名字。当我试图显示这些名字时,问题就出现了。代替打印名字,我的代码打印乱码 代码...C:链表打印垃圾字符
struct node
{
char name1[5];
struct node *link;
};
void add(struct node **q,char *name)
{
struct node *temp,*r;
if(*q==NULL)
{
temp=malloc(sizeof(struct node));
*temp->name1=name;
temp->link=NULL;
*q=temp;
count++;
}
else
{
count++;
temp=*q;
while(temp->link !=NULL)
temp=temp->link;
r=malloc(sizeof(struct node));
*r->name1=name;
r->link=NULL;
temp->link=r;
}
}
void display(struct node *q)
{
while(q!=NULL)
{
printf("%s",q->name1); //it prints junk characters
q=q->link;
}
}
int main()
{
struct node *p;
p=NULL;
add(&p,"Alice");
add(&p,"Cat");
add(&p,"Pawan");
add(&p,"BoB");
display(p);
getch();
return 0;
}
你会得到一些答案,告诉你代码有什么问题,但是为了将来的参考,你可以通过编译启用警告来自己发现一些错误。例如,用'gcc -Wall'编译你的确切代码告诉我@ unwind的答案指出了什么。 – 2013-02-20 13:33:05