while((c= getchar()) != '\n' && c != EOF);
我在使用gets()輸入字符串時遇到了問題。我在google上發現它在輸入緩衝區中保留了'\ n'的值。我在這裏搜索並找到了上面的代碼來解決我的問題。但是我並不完全瞭解它。這是做什麼?任何人都請賜教。這是幹什麼的:while((c = getchar())!=' n'&& c!= EOF);
while((c= getchar()) != '\n' && c != EOF);
我在使用gets()輸入字符串時遇到了問題。我在google上發現它在輸入緩衝區中保留了'\ n'的值。我在這裏搜索並找到了上面的代碼來解決我的問題。但是我並不完全瞭解它。這是做什麼?任何人都請賜教。這是幹什麼的:while((c = getchar())!=' n'&& c!= EOF);
該代碼引入了一個while
-loop。其退出條件分配整數c
getchar()
返回的值,並檢查它是否等於換行符('\n'
)或EOF
。如果是,則退出循環。如果不是,則提取下一個字符,依此類推。
該代碼基本上跳過所有字符,直到到達下一個換行符或EOF
。它相當於:
for (;;)
{
c = getchar(); // c has been declared elsewhere
if (c == '\n' || c == EOF)
break;
}
是啊!這種方式比單純的濃縮要容易得多。 +1 – Adi 2014-10-04 12:46:00
@gotolabeladi,你沒有足夠的代表upvote/+ 1,但你仍然可以接受它 – 2014-10-04 13:03:09
C++中的賦值也會產生被賦值的值。因此c= getchar()
正在讀取文件中的下一個字符,而(c= getchar()) != '\n'
正在將該讀取的字符與新行字符進行比較。還有另外一個測試是爲了確保特殊值EOF
的值,以確保在到達文件末尾時它不會繼續嘗試讀取。
在while
和結束分號之間沒有聲明,因爲沒有其他任何事情需要完成,所以您將輸入信息丟棄。
不,你需要自己學習C++,然後在這裏發表一個問題 – 2014-10-04 12:30:55
我把'C++'標記改爲'C'標記,因爲它純粹是'C',而不是'C++'。 – Benio 2014-10-04 12:34:41
@Benio不這樣做。只要它是有效的C++代碼,它也是有效的C並不重要。有時差異很重要。 – 2014-10-04 12:37:59