我编写了以下代码:
void concat_nodes(struct strnode *head, char *str)
{
struct strnode *create = head;
int n, j;
int i = 0;
while (create != NULL)
{
n = strlen(create->str);
for (j = 0; j < n; ++j, ++i)
{
str[i] = create->str[j];
}
str[i++] = ' ';
}
str[i] = '\0';
}
这段代码的目的是将 str
修改为具有给定头部的列表内容的字符串表示。例如,链表 ah--->bal--->sed
应生成字符串 "ah bal sed"
,sed
后没有空格。我当前运行时的实现给了我“分段错误”。任何帮助将不胜感激。
注意:在主函数中,我按如下所示调用它:
concat_nodes(n3, str)
,str 是一个数组 char str[100] = "";
,n3
是第三个节点。
结构:
struct strnode
{
char str[5];
struct strnode * next;
};
答案 0 :(得分:4)
看看这个循环条件:
(10,3277)
... 然后看看你在哪里修改 while (create != NULL)
... nowhere。循环永远不会结束,并将继续迭代 create
,直到它 str[i]
到达 i
的末尾并溢出,导致未定义的行为,最有可能导致分段错误。