0
因此,我正在将文件中的所有单词读入链表中。我有一个单独的链表,每个字母的单个字母。尝试将新节点插入链表时程序崩溃。为什么?
这里的结构:
struct WORD {
char* word;
int noOfUse;
struct WORD* next;
};
和数组:
struct WORD* dictionary[26];
,循环读取所有的话:
do {
fscanf(fp, "%s", buffer);
printf("%s\n", buffer);
dictionary[buffer[0]-'a'] = insertWord(buffer, dictionary[buffer[0]-'a']);
} while (!feof(fp));
而且功能:
struct WORD* insertWord (char buffer[30], struct WORD* node){
if (node == NULL){
node = (struct WORD*) malloc (sizeof(struct WORD));
node->word = (char*) malloc (strlen(buffer)+1);
strcpy(node->word, buffer);
node->next = NULL;
}
else {
node->next = insertWord(buffer, node->next);
}
return node;
}
我看不出我在做什么错她,但程序崩溃,只要我运行它。我是否想要到达我不想接触的地方?
“字典”是否已初始化?元素是否都是“NULL”?而如果输入不是小写字母呢? –
顺便说一句,如果'node'不是'NULL',那么你有无限递归。 –
在这种情况下它们都是小写字母。字典是否需要初始化?无论如何,我希望它的所有元素在开始时都是空的。我宁愿在函数内初始化它们。 –