【发布时间】:2016-07-30 10:07:41
【问题描述】:
#include <stdio.h>
int main(){
char ch;
while((ch=getchar())!=EOF){
putchar(ch);
}
char ch2 = 'A';
printf("ch2=======>%c\n",ch2);
ch2 = getchar();
printf("ch2=======>%d\n",ch2);
return 0;
}
我不明白为什么它会跳过ch2=getchar() 输入,然后我得到 ch2 == -1,它是 EOF 的值。我试图通过在ch2=getchar() 之前添加另一个getchar() 来解决这个问题,但我仍然得到 ch2 == -1。为什么会这样以及如何解决?感谢您的帮助。
我使用的是 MacOS。
【问题讨论】:
-
在这个例子中你为什么还要使用 EOF?据我所知,这段代码与文件无关。
-
最后一个输入是
EOF,所以它不会进入循环; -
一旦您到达输入的末尾,任何进一步的读取尝试仍然会到达输入的末尾。
-
另外,不要将
getchar()的返回值存储在char中。它返回int是有原因的。 -
@melpomene 哦,谢谢。那么这是否意味着标准输入流在我输入 EOF 时永久停止?
标签: c