【发布时间】:2015-12-30 01:29:10
【问题描述】:
我正在使用结构做一些工作,由于某种原因,当我尝试运行我的程序时出现分段错误。如果我删除 printfunction 中的 printf 行,程序完成没有问题,但关键是打印出存储在 list->line 中的内容。
addLine 函数添加一个新的 struct-object,将其放在列表的末尾并指向第一个 struct-object。
printFunction 应该打印出列表中的所有行。
结构:
typedef struct listoflines list;
struct listoflines {
list* next;
char* line;
};
addLine函数:
void addLine(list* firstline, char* linep) {
list* newline = malloc(sizeof(list));
newline->next = firstline;
newline->line = malloc((sizeof(char) * strlen(linep) + 1));
strcpy(newline->line, linep);
list* currentline = firstline;
while(currentline->next){
if(currentline->next == firstline){
currentline->next = newline;
return;
}
else {
currentline = currentline->next;
}
}
currentline->next = newline;
}
printFunction函数:
void printFunction(list* firstline){
list* currentline = firstline;
while(currentline->next != firstline){
printf("%s\n", currentline->line);
currentline = currentline->next;
}
}
addLine 函数已经运行了 4 次,并且 printFunction 被赋予了一个指向与 addline 函数相同的“第一行”的指针。 非常感谢任何帮助。在这一点上,我不知道可能出了什么问题。
【问题讨论】:
-
你如何初始化
firstline? -
列出结构体; memset(&structholder, 0, sizeof(list));
-
然后我发送地址(&structholder)
-
好吧,看起来初始化确实导致了错误。详细回答如下。
标签: c struct segmentation-fault printf