首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

哪位高手能进来解释一下

2012-03-20 
谁能进来解释一下#includestdio.hintmain(){intcwhile((cgetchar())!EOF){putchar(c)}return0}为什

谁能进来解释一下
#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是带缓冲的输入

热点排行