gpt4 book ai didi

c - 使用 trie.c 和 trie.h 打印 string-tri

转载 作者:行者123 更新时间:2023-11-30 16:46:01 25 4
gpt4 key购买 nike

这是我使用 trie.c 和 trie.h 制作的主文件。该程序的目的是存储字典文件中的单词。

node* x = (node*)malloc(sizeof(node));
x = insert("bb", x);
x = insert("sdf", x);
x = insert("df", x);
x = insert("bbbb", x);
printAllWords(x);

。。。。.

        while (fgets(word, MAX_WORD, file) != NULL) {
if (word[strlen(word)-1] == '\n') { // remove '/n' at the last
word[strlen(word)-1]='\0';
}
printf("print word : %s \n" , word);
printf("length : %d \n" , (int) strlen(word));
dictionary = insert(word, dictionary);
}
dictionary = insert("PLEASE", dictionary);
dictionary = insert("zzz", dictionary);
printAllWords(dictionary);

。。。.

我的输出是

bbbb
bb
df
sdf
print word : he
length : 2
print word : he's
length : 4
print word : halp
length : 4
print word : hapless
length : 7
print word : hello
length : 5
PLEASE
hello
hello
hello
hello
hello
zzz

如您所见,我的插入方法适用于纯字符串,例如“zzz”,但我不知道为什么它不适用于从文件中提取的单词......您可以帮助我吗?

最佳答案

我猜你的节点是这样的:

struct
{
char *word;
// Left and right pointers, etc
} node;

并且 insert(char const *newWord) 具有:

thisNode->word = newWord;

如果遵循指针分配,循环中的所有新字都指向相同的内存地址。快速但肮脏的修复是:

struct
{
char word[MAX_WORD_LENGTH];
// Left and right pointers, etc
} node;

并且 insert(char const *newWord) 具有:

strcpy(thisNode->word, newWord);

这会将每个单词存储在单独的缓冲区中。

关于c - 使用 trie.c 和 trie.h 打印 string-tri,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43906489/

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