gpt4 book ai didi

c - 我在这里不断遇到段错误。在这里呆了 4 个小时

转载 作者:行者123 更新时间:2023-11-30 18:45:23 24 4
gpt4 key购买 nike

我真的需要一些帮助,因为我几个小时以来一直在尝试寻找解决方案,但没有任何效果。

我有这两个结构:

typedef struct NODE {
char* line;
int count;
struct NODE *left, *right;
} NODE;

typedef struct BST {
NODE *root;
} BST;

这些代码行看起来很可疑:

if (iflag == 0) {
char curr_string[300];
BST binary_tree;

//fpointer_in = fopen(filename_in, "r");

//while (!feof(fpointer_in)) {

//fgets(curr_string, 300, fpointer_in);
addTreeNode("Hello There!", binary_tree.root); // Adds the node to the binary tree.

//}
NODE *cpy = malloc(sizeof(NODE));
cpy->line = calloc(25, sizeof(char));

cpy->count = 0;
cpyNode(cpy, binary_tree.root);

free(cpy);
free(binary_tree.root);
//printf("%s\n", cpy->line);
//free(binary_tree.root);
//fclose(fpointer_in);
}

这是addTreeNode函数:

void addTreeNode(char* line_string, NODE* root) {

if (root == NULL) {
root = calloc(25, sizeof(char)); // 25 is a test var.
root->line = calloc(25, sizeof(char)); // 25 is a test variable.
strcpy(root->line, line_string);
root->count = 0;
}
else {
NODE *add_node = malloc(sizeof(NODE));
add_node->line = calloc(25, sizeof(char)); // 25 is a test variable.
strcpy(add_node->line, line_string);

while (root != NULL) {
if (strcmp(line_string, root->line) < 0 && root->left == NULL) {
//cpyNode(node_ptr->left, add_node);
}
}
}
}

addTreeNode 函数中的 if block 已经过测试,但我还没有测试 else block 。无论如何,它从未被使用过,所以我认为这不是一个问题。

这里的问题是,在程序到达 main 之前,我就遇到了段错误。当我注释掉 cpyNode(cpy, binary_tree.root); 时声明,然后它就起作用了。然后我继续注释掉整个 cpyNode 函数减去第一行。我发现第一行给了我一个段错误,但我不明白为什么。一些帮助将不胜感激。

最佳答案

您可能还有其他错误,但这些是您需要解决的问题:

if(iflag == 0){
char curr_string[300];
BST binary_tree;

此处,binary_tree 未初始化。

        addTreeNode("Hello There!", binary_tree.root);
//Adds the node to the binary tree.

您希望此调用向树中添加一个节点,但您正在按值传递未初始化的 root 成员,因此在函数调用返回后,指针将保留其未初始化状态。

您应该修改您的 addTreeNode 函数以接受指向 BST 的指针,并将 binary_tree 的地址传递给该函数。

关于c - 我在这里不断遇到段错误。在这里呆了 4 个小时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54913993/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com