2012-06-05 25 views
0

可能重复:
Why doesn't getchar() recognise return as EOF in windows console?使用字符EOF和getchar函数(c)中计算

我用C新试图找出如何EOF和的getchar()的工作原理。

#include <stdio.h> 

main() 
{ 

int number = 0; 
while(getchar() != EOF) 
    number++; 

printf("%d", number); 
} 

当我键入一些随机字符时,程序不会做任何事情,我认为它永远不会出现while循环。这是为什么?我在Windows 7上使用CodeBlocks。

+0

EOF是结束文件的标记。键入CTRL + Z或更改条件以使用键盘上的字符退出循环。 –

+0

由于EOF无法通过键盘输入。 :) –

回答

1

因为您未发送EOF字符。 “EOF”代表“文件结束”;控制台输入(称为“标准输入”)是文件的特例。但为了表示这个特殊文件已经结束,你需要发送一个特殊的信号。您可以通过按Ctrl + Z(后跟Enter键出于某种原因)在Windows上获得此效果。