2

テキスト ファイルから読み取り、while(!feof)ループを繰り返していますが、この条件を使用するたびに、ループが余分な時間を繰り返します。

この「パッチのある」コードで問題を解決しました

while (stop == FALSE)
{
 ...

        terminator = fgetc(input);
        if (terminator == EOF)
            stop = TRUE;
        else
            fseek(input, -1, SEEK_CUR);
}

でも見た目も気持ちも悪いです。

4

3 に答える 3

7

代入が代入される値として評価されるという事実を利用できます。この場合は、読み取られる文字です。

while((terminator = fgetc(input))!= EOF) {
    // ...
}
于 2013-08-30T14:09:43.867 に答える
6

以下は慣用的な例です ( source ):

fp = fopen("datafile.txt", "r"); // error check this!

// this while-statement assigns into c, and then checks against EOF:

while((c = fgetc(fp)) != EOF) {
    /* ... */
}

fclose(fp);
于 2013-08-30T14:11:09.420 に答える