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不同,反之亦然。