在Kernighan和Ritchie(C编程语言)中:
'编写程序以打印EOF'的值
我写道:
#include <stdio.h>
main(){
int c;
c = getchar();
if ((c = getchar()) == EOF)
putchar(c);
}
但它没有输出什么为什么?
答案 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
不是要走的路。