Я новичок в c и застрял на этой ошибке в течение нескольких часов.Мой код читает каждое слово из текстового файла, а затем сохраняет слово в узле в дереве.
Я сузил задачу до области, отмеченной звездочками: в этот момент я успешно добавил первоеслово в три и проверьте, что правильное значение узла соответствует слову.Затем я использую fscanf
, чтобы сохранить следующее слово в файле как символ «добавить».Затем, печатая то же самое, что и раньше, слово узла должно было остаться прежним.Однако оно каким-то образом было изменено на новое слово, которое только что было прочитано из файла.
Как это вообще возможно ??
int main(int argc, char** argv) {
trie_t* trie = malloc(sizeof(trie_t));
trie_init(trie);
int ret;
char* add = malloc(128);
FILE* file = fopen(argv[5], "r");
if (file == NULL) {
/* Failed to open the file for reading */
return 0;
}
while (1) {*********************
if (trie->head->children != NULL) {
printf("%s\n", trie->head->children->word);
}
ret = fscanf(file, "%s", add);
//printf("word = %s\n",toAdd);
if (trie->head->children != NULL) {
printf("%s\n", trie->head->children->word);
}****************************
if (ret == EOF) {
/* End of file */
ret = 1;
break;
} else if (ret <= 0) {
printf("fails");
/* Failed to read a word from the file */
break;
} else {
printf("gets here\n");
/* Succesfully read a word */
int x = trie_add(trie, add);
printf("%d\n",x);
}
}