打印EOF的值

时间:2014-05-24 11:22:05

标签: c putchar

在Kernighan和Ritchie(C编程语言)中:

'编写程序以打印EOF'的值

我写道:

#include <stdio.h>

main(){

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

但它没有输出什么为什么?

3 个答案:

答案 0 :(得分:14)

putchar函数打印一个字符。

但EOF不是一个字符,用于表示文件的结尾。所以getchar返回一个可以与字符集区分的值,以表示没有更多的输入。

因此使用putchar()打印EOF不会打印任何值

将其打印为整数

printf("%d",EOF);

给出结果 -1

答案 1 :(得分:6)

试试这个:

#include <stdio.h>

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

EOF不是您所期望的可打印字符。

答案 2 :(得分:6)

putchar表示在正在使用的字符编码中输出与c对应的字符(通常为ASCII)。编码EOF没有字符(这是EOF的全部内容)。

“EOF的值”并不意味着“打印代码为EOF的字符”。

另一个例子:角色A的值是65;您的任务是打印等效于65的{​​{1}},而不是EOF。所以,A不是要走的路。