当我更改字符数组时链表更改
linked list change when i change the array of character
问题是当我第二次把 if 语句中的任何单词 q->ch 更改为新单词时
..我想让q成为链表开始的指针
while(true){
tmp=(list*)malloc(sizeof(list));
printf("\n put any word:");
scanf("%s",name);
printf("\n");
tmp->ch=name;
if (i==0)
{
q=p=tmp;
}
else
{
p->nxt=tmp;
p=tmp;
}
printf("when you want to end press y \n");
scanf(" %c",&c);
if (c=='Y' || c=='y')
{
break;
}
i++;
}
q
确实指向列表中的第一个节点。问题是当你这样做时
tmp->ch = name
您只是在复制一个地址。因此,每个节点都指向同一个缓冲区,该缓冲区将以最后一个单词结尾。
要修复它,需要复制字符串:
tmp->ch = strdup (name)
问题是当我第二次把 if 语句中的任何单词 q->ch 更改为新单词时 ..我想让q成为链表开始的指针
while(true){
tmp=(list*)malloc(sizeof(list));
printf("\n put any word:");
scanf("%s",name);
printf("\n");
tmp->ch=name;
if (i==0)
{
q=p=tmp;
}
else
{
p->nxt=tmp;
p=tmp;
}
printf("when you want to end press y \n");
scanf(" %c",&c);
if (c=='Y' || c=='y')
{
break;
}
i++;
}
q
确实指向列表中的第一个节点。问题是当你这样做时
tmp->ch = name
您只是在复制一个地址。因此,每个节点都指向同一个缓冲区,该缓冲区将以最后一个单词结尾。
要修复它,需要复制字符串:
tmp->ch = strdup (name)