读书人

哪位高手能进来解释一下

发布时间: 2012-03-20 14:01:11 作者: rapoo

谁能进来解释一下
#include <stdio.h>
int main(){
int c;
while ((c=getchar())!=EOF)
{ putchar(c);}
return 0;
}为什么总是循环?怎么才能不让它循环?EOF是什么?


#include <stdio.h>
int main(){
int c;
while ((c=getchar())==EOF)
{ putchar(c);}
return 0;
}为什么敲一个回车就退出循环了?

书上说EOF是个整数.这样的代码可以把EOF值打印出来吗?
if ((c=getchar())==EOF)
printf( "%f ",c);

[解决办法]
EOF=-1
输入EOF用CTRL+Z

另外,你的程序:
if ((c=getchar())==EOF)
printf( "%f ",c);

c是一个char,用%f来输出,大概会出问题吧。
要知道EOF,可以 printf( "EOF=%d\n ",EOF);
会输出-1的
[解决办法]
是因为getchar只有在有回车之后才开始检测字符,可以说是“缓冲”输入问题,但是说是console 输入似乎更合理。缓冲也不必要等回车啊:)
[解决办法]
getch是不带缓冲的输入 getchar是带缓冲的输入

读书人网 >C语言

热点推荐