使用getchar()不能让EOF退出do while循环

时间:2012-04-17 19:49:37

标签: c

我有这段代码

whitespaces是一个int类型,所以我可以使用getchar函数

do
{

 ...code...

whitespaces=getchar();}
while ( whitespaces != (EOF) || whitespaces!='\n');

但是当我按下CTRL + Z(我正在使用Windows 7)时它不会退出循环

我做错了什么?

编辑:谢谢你们所有人......!非常有帮助

3 个答案:

答案 0 :(得分:5)

您必须在&&条件下使用||代替while

答案 1 :(得分:1)

您的情况不正确:

while ( whitespaces != (EOF) && whitespaces!='\n');

A \ n将自动与EOF不同,反之亦然。

答案 2 :(得分:1)

尝试将||更改为&&。现在,如果whitespaces等于EOF,则它不是换行符,因此while条件始终为true。这可能不是你想要的。