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)表示在使用的字符编码(通常是ASCII)中输出对应的字符c(为数字)。

没有字符被编码为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 回答