所以我正在将文件中的所有单词读到一个链表列表中。我为字母表中的每一个字母都有一个单独的链表。
这是结构:
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;
}
我无法看到我做错了什么,但程序一旦运行就崩溃了。我想到达一个我不想到达的地方吗?
答案 0 :(得分:2)
首先struct WORD* dictionary[26];
这可以用垃圾初始化,你应该设置26个指向NULL的指针,
else {
node->next = insertWord(buffer, node);
}
这将执行if node!= NULL然后再次将它传递给insertWord函数,然后再次传递node!= NULL并再次启动此函数...,它是无限递归。< / p>
还要记住大写字母。