C語言scanf語句輸入跳過造成死循環的解決辦法

現象描述:在編寫C語言程序時,需要使用scanf語句從鍵盤上輸入一個整型的數時,當錯誤的輸入了字符時,scanf語句就好像不會執行,但從鍵盤輸入其他數字又無法獲取。

問題分析:當定義scanf語句接收整型數值時,它就會跳過所有的非數字的字符,專接收數字。當輸入了字符時,字符就會留在緩衝區,只要緩衝區又字符,scnaf就會去讀,一讀發現不是數字,就會跳過,只有當輸入緩衝區沒有字符了纔等待你去輸入,這個過程會反覆的進行,造成死循環。

問題解決:可以在scanf語句後面加上getchar()這個函數,用來接收非數字字符,這樣當輸入非數字字符時,這個字符就被getchar()這個函數接收了,不會留在scanf的shur輸入緩衝區,scnaf就不會去讀它,就不會出現死循環。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章