【发布时间】:2012-04-03 13:28:16
【问题描述】:
尝试在命令行中从用户那里获取几个文件名并将它们存储到链接列表中,但我收到了分段错误。这个想法是让用户输入每个文件名,然后在完成后输入“q”。
我输入第一个文件名“man_on_moon.txt”,没有出现错误。在我输入第二个之后,“sat_moons_rings.txt”我得到.. Segmentation fault: 11 我相信它发生在我对 char *name 的分配中,但我不确定。
char *name = malloc(sizeof(char) *50);
scanf("%s", name);
list *curr, *head;
curr = malloc(sizeof(list));
head = malloc(sizeof(head));
if(name != "q")
{
curr->item = name;
head->next = curr;
curr = curr->next;
scanf("%s", name);
}
while(name != "q")
{
curr->item = name;
curr = curr->next;
scanf("%s", name);
}
【问题讨论】:
-
您只分配了一个字符串。每次
scanf("%s", name)都会覆盖相同的字符串数据。 -
这行有点可疑:“
head = malloc(sizeof(head));”可能只是一个错字,但head和curr是相同类型的指针,但它们被分配了不同大小的块。 .
标签: c string char variable-assignment