Мне действительно нужна помощь, потому что я пытался найти решение этой проблемы часами, но ничего не получается.
У меня есть две структуры:
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);
}
}
}
}
Блок if в функции addTreeNode был протестирован, но мне еще предстоит протестировать блок else.Несмотря на это, он никогда не используется, поэтому я не думаю, что это проблема.
Проблема здесь в том, что я получаю ошибку сегментации ДО того, как программа даже достигнет main.Когда я закомментирую cpyNode (cpy, binary_tree.root);Скажите, тогда это работает.Затем я продолжил закомментировать всю функцию cpyNode без первой строки.Я понял, что первая строка дает мне ошибку сегментации, и я не могу понять, почему.Некоторая помощь будет принята с благодарностью.