尝试连接节点时出现分段错误

时间:2021-03-19 00:35:35

标签: c

我编写了以下代码:

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;
};

1 个答案:

答案 0 :(得分:4)

看看这个循环条件:

(10,3277)

... 然后看看你在哪里修改 while (create != NULL) ... nowhere。循环永远不会结束,并将继续迭代 create,直到它 str[i] 到达 i 的末尾并溢出,导致未定义的行为,最有可能导致分段错误。