フォーマットのファイルから読み込んでいます
1 32 43 23
32 43
123 43 54 243
123 2222
2
これが私のコードスニペットです。
string[100];
while(!feof(fp))
fgets(string,100,fp)
ここで、すべての文字列を入力すると、最後の文字列に繰り返しといくつかのあいまいさが生じます(他の何かが123などと表示されるように)。
この問題を解決するには?
fgets の戻り値を確認する必要があります。読み取りが成功した場合、fgets
は、渡されたバッファーへのポインターを返します(例ではstring
)。ファイルの終わりが検出され、文字が読み込まれていない場合、fgets
はNULL
を返します。
これを試して:
char string[100];
while(fgets(string, 100, fp)) {
printf("%s\n", string);
}
eof
に到達しただけ後最後にあるファイルから読み取ろうとしました。代わりにfgets
の戻り値を使用する必要があります(eofまたはエラーでNULL
を返し、それ以外の場合はポインターを返します)。
char string[100];
while(fgets(string, 100, fp))
// do stuff with string
このように戻り値を確認すると、条件内ではなく、ループ本体の内部のeofにヒットすることはありません。