10

Kernighan と Ritchie (C プログラミング言語) では:

「EOFの値を出力するプログラムを書いてください」

私が書いた:

#include <stdio.h>

main(){

    int c;
    c = getchar();
    if ((c = getchar()) ==  EOF)
        putchar(c);
}

しかし、何も出力されませんなぜですか?

4

3 に答える 3

18

putchar 関数は文字を出力します。

ただし、EOF は文字ではなく、ファイルの終わりを示すために使用されます。そのため、getchar は文字セットと区別できる値を返し、これ以上入力がないことを示します。

そのため、putchar() を使用して EOF を出力すると、値が出力されません

整数として出力する

printf("%d",EOF);

結果-1を与える

于 2014-05-24T11:27:48.543 に答える
9

putchar(c)c使用中の文字エンコーディング (通常は ASCII) の (数字である) に対応する文字を出力することを意味します。

としてエンコードされる文字はありませんEOF(それが の要点ですEOF)。

「EOF の値を出力する」という規定は、「コードがEOF" である文字を出力する」という意味ではありません (存在しないため)。代わりに、システムと同じ値で整数を出力することを意味する可能性が最も高いEOFです。

于 2014-05-24T11:25:51.833 に答える
6

これを試して:

#include <stdio.h>

int main(){
    printf("EOF: %d\n", EOF);
}

EOFあなたが期待したように、印刷可能な文字ではありません。

于 2014-05-24T11:25:08.370 に答える