2012-04-17 59 views
0

我有这样的代码不能得到EOF退出do while循环,在使用getchar()

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

do 
{ 

...code... 

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

但它不退出当我打CTRL + Z循环(我正在使用Windows 7)

我做错了什么?

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

回答

1

尝试将||更改为&&。现在,如果whitespaces等于EOF,它不是换行符,所以while条件始终为真。这大概不是你想要的。

+0

哦,我的得到了......我明白了!谢谢!! – YNWA 2012-04-17 19:59:13

5

您必须在while条件下使用&&而不是||

+0

嗯,但是为什么?如果我按CTRL Z或ENTER,我想让它退出循环。 isnt || OR运算符? – YNWA 2012-04-17 19:57:51

+0

我明白了......那句话本身总是真的:)谢谢 – YNWA 2012-04-17 20:00:38

1

你的条件是不正确:

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

一个\ n将自动比EOF不同,反之亦然。