現象描述:在編寫c語言程式時,需要使用scanf語句從鍵盤上輸入乙個整型的數時,當錯誤的輸入了字元時,scanf語句就好像不會執行,但從鍵盤輸入其他數字又無法獲取。
問題分析:當定義scanf語句接收整型數值時,它就會跳過所有的非數字的字元,專接收數字。當輸入了字元時,字元就會留在緩衝區,只要緩衝區又字元,scnaf就會去讀,一讀發現不是數字,就會跳過,只有當輸入緩衝區沒有字元了才等待你去輸入,這個過程會反覆的進行,造成死迴圈。
問題解決:可以在scanf語句後面加上getchar()這個函式,用來接收非數字字元,這樣當輸入非數字字元時,這個字元就被getchar()這個函式接收了,不會留在scanf的shur輸入緩衝區,scnaf就不會去讀它,就不會出現死迴圈。
c語言scanf陷阱 緩衝區引起的跳過輸入問題
小白在學習c語言的時經常會有不懂的地方,有時候因為乙個小小的問題,或者因為乙個小小的概念沒有理解清楚,都會造成懵逼 無解的情況,然而這樣的情況在程式設計中經常出現,所以不不僅在c語言中,還存在大多數的程式語言中 本文要說的就是關於c緩衝區特性引發scanf 方法的一些奇怪現象 1.本文描述的編譯環境...
C語言使用scanf輸入
scanf 函式結構 scanf 函式被用來從stdin讀入資料,並且在程式中儲存資料。預設,這個stdin流是來著鍵盤輸入。scanf 的函式結構與printf 類似 int i scanf d i d 是乙個佔位符,說明這個地方有乙個變數,並且為整型變數 是個位址符,表明這個地方放置位址,i的意...
C語言格式輸入函式scanf 詳解
scanf函式稱為格式輸入函式,即按使用者指定的格式從鍵盤上把資料輸入到指定的變數之中。scanf函式是乙個標準庫函式,它的函式原型在標頭檔案 stdio.h 中。與printf函式相同,c語言也允許在使用scanf函式之前不必包含stdio.h檔案。scanf函式的一般形式為 scanf 格式控制...