3

次の機能があります。

void readAndPrint(FILE * f) {
    int c;

    while(c = fgetc(f) != EOF) {
        printf("%d", c);
    }
}

main()本体で、次のコードを使用して上記の関数を使用しました。

FILE * pFile;

pFile=fopen ("myfile.txt","r");

readAndPrint(pFile)

;

myfile.txtに何を入れても、プログラムはそれを出力します。たとえば、abcの場合、111が出力されます。

EOFと適切に比較するには、関数内のcをintとして宣言する必要があることを私は知っています。また、テキストファイルの各文字に設定されたASCIIからのintコードが出力されることを期待していました(aの場合は97、...)。なぜ「1つ」が出力されるのかわかりません...その理由を知っていますか?前もって感謝します。

4

1 に答える 1

12

(c = fgetc(f) != EOF)-ここで最初にfgetc(f) != EOFこの状態が発生し、結果1または0がに割り当てられcます。常に条件チェックはTRUE1)またはFALSE0)を返します。

行うwhile((c = fgetc(f)) != EOF)

于 2013-02-02T20:17:57.567 に答える