在 Kernighan 和 Ritchie(C 编程语言)中:
'编写程序打印 EOF 的值'
我写:
#include <stdio.h>
main(){
int c;
c = getchar();
if ((c = getchar()) == EOF)
putchar(c);
}
但它不输出任何东西为什么?
putchar 函数打印一个字符。
但 EOF 不是字符,用于指示文件的结束。因此 getchar 返回一个可与字符集区分开来的值,以指示没有更多输入。
因此使用 putchar() 打印 EOF 不会打印任何值
将其打印为整数
printf("%d",EOF);
给出结果-1
putchar(c)
表示在使用的字符编码(通常是ASCII)中输出对应的字符c
(为数字)。
没有字符被编码为EOF
(这就是 的全部意义EOF
)。
“打印EOF的值”的规定并不意味着“打印代码为EOF
”的字符(因为没有)。相反,它们很可能意味着打印与系统上具有相同值的整数EOF
。
试试这个:
#include <stdio.h>
int main(){
printf("EOF: %d\n", EOF);
}
EOF
不是您预期的可打印字符。