私はファイルの辞書から入力を取ろうとしています、一度に1行、私はファイル辞書の各行がただ一つの単語であることを知っています。このコードをコンパイルしようとするとエラーコードが表示されます。エラーは次のとおりです。whileループのエラーコード。ファイルを1行ずつ読み込みます。 Cで
dictionary.c:66:エラー:異なるポインタタイプの比較( ''と 'int() FILEの*) ') [-Werror、-Wcompare-明確なポインタ-タイプ] しばらく((関数fgets(ワード、46、DIC))!= FEOF)
私は、コーディングに非常に新しいです、そしてないです間違ったメソッドを使用しようとしている場合、またはこれを正しくコーディングしていない場合、これがこのように実行できるかどうかを確認してください。事前にナーの助けをありがとうございます。
bool load(const char* dictionary)
{
char word[46];
unsigned long key;
//remember file name
FILE* dic = fopen(dictionary , "r");
if (dic == NULL)
{
printf("Could not open file..\n");
return false;
}
while ((fgets(word, 46, dic)) != feof)
{
numberWords++;
//Save new word
node* newWord = malloc(sizeof(node));
strcpy(newWord->dicWords, word);
newWord->next = NULL;
//Use Hash function on new word found
key = hash(word);
//Enter word into Hashtable
if (hashTable[key] == NULL)
{
hashTable[key] = newWord;
}
else
{
newWord->next = hashTable[key];
hashTable[key] = newWord;
}
}
fclose(dic);
return false;
'fgets'は各入力の最後に' newline'を保持していることに注意してください。この行で削除することができます: 'word [strcspn(word、" \ r \ n ")] = 0;' –