-1
修復的條件錯誤於是我宣佈一個字符串數組作爲 typedef char String[11];
和我的主要功能我有這個條件 `如何從一個字符串數組
char word[12];
String hashArray[SIZE];
if (insertword(word, hashArray) == 1)
printf("word %s successfully inserted.\n", word);
這是它調用函數。
int insertword(char word[], String hashArray[])
{
//get the hash
int hashIndex = hashfunction1(word)% 7 ;
printf("INDEX:%d\n", hashIndex); //delete later
if (hashArray[hashIndex] == NULL) //ERROR IS HERE
{
strcpy(hashArray[hashIndex], word);
printf("INSERTED!! ");
return 1;
}
else
{
printf("NOT INSERTED!! ");
return 0;
}
}
我已經通過添加打印測試了我的程序,顯然錯誤發生在第一個條件語句。 else部分總是被執行。我絕對錯過了一些東西,任何幫助將不勝感激。
'hashIndex'要求*小於*'SIZE'嗎?否則***未定義的行爲***結果。並且'SIZE'總是大於'strlen(word)+ 1;'(如果不在'strcpy(hashArray [hashIndex],word)中,結果相同;'如果'hashArray [hashIndex]'沒有提供至少'strlen (word)+ 1;'chars of storage。)所有'hashArray [hashIndex]'元素初始化爲'NULL'?如果是這樣,你沒有存儲'strcpy(hashArray [hashIndex],word);'因爲'hashArray [hashIndex]'是***未初始化/未分配***指針。 –
請參閱:[**如何創建最小,完整和可驗證的示例**](http://stackoverflow.com/help/mcve)。 –
我有一個文本文件中的32個字符串,我確保爲每個單詞分配足夠的空間。我認爲問題根源於未初始化的陣列。然而我還沒有分配任何東西給數組呢..我應該設置爲空元素?我有一種感覺,從我宣佈它的那一刻起,它應該已經是空的了。 – Erail