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',那麼你有無限遞歸。 –
在這種情況下它們都是小寫字母。字典是否需要初始化?無論如何,我希望它的所有元素在開始時都是空的。我寧願在函數內初始化它們。 –