打印EOF的值

big*_*ree 6 c putchar

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

'写一个程序来打印EOF的价值'

我写:

#include <stdio.h>

main(){

    int c;
    c = getchar();
    if ((c = getchar()) ==  EOF)
        putchar(c);
}
Run Code Online (Sandbox Code Playgroud)

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

Sor*_*rer 14

putchar函数打印一个字符.

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

所以使用putchar()打印EOF不会打印任何值

将其打印为整数

printf("%d",EOF);
Run Code Online (Sandbox Code Playgroud)

给出结果-1

  • @MichaelElliott的“ EOF”是一个扩展为“ -1”的宏(它是没有对应字符的整数值)。 (2认同)

mit*_*tnk 6

试试这个:

#include <stdio.h>

int main(){
    printf("EOF: %d\n", EOF);
}
Run Code Online (Sandbox Code Playgroud)

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

  • EOF甚至不是一个角色 (7认同)

M.M*_*M.M 6

putchar(c)表示输出与使用c中的字符编码(通常是ASCII)对应的字符.编码没有字符EOF(这是整个点EOF).

"EOF的值"并不意味着"打印代码为的字符EOF".

另一个例子:角色的值EOF是65; 你的任务是打印相当于putchar(c)c不是for EOF.所以,EOF不是要走的路.