while (getchar()!='\n') ; ?表示循環讀入字符,直到讀到回車符結束循環。
我們在輸入壹個數據時,壹般都會按回車來確認輸入結束,可是scanf()函數對最後的回車確認符並不丟棄,而是存儲在緩存中,這樣如果,下壹個操作是讀字符操作,則會將緩存中的回車符誤讀為實際數據,而造成程序運行異常。因此,在確認輸入壹個數據後,要回車來確認時,可通過while (getchar()!='\n') ;來清除緩存中的垃圾數據。
這個語句,還可以做到清除輸入多余的字符,如:
char?ch[11];?//最多能存儲10個字符getline(?ch,?10?);?//輸入10個字符,可是用戶有可能輸入10個以上的字符,於是可用上面的語句來清除緩存的數據。
while?(getchar()!='\n')?;
這樣,後續的讀數據操作,就不會受這裏的輸入影響了。