C語言 scanf在while迴圈裡的無限迴圈

2021-07-31 10:12:38 字數 529 閱讀 6534

首先看一段**

#include int main()

else if (input < 0)

}return 0;

}

可以看出來它的意思是當輸入乙個正數時,會繼續輸入,直到輸入乙個負數時才停止。但是,粗心的我有一次把乙個字母輸入進去了,結果

為什麼會這樣呢?

scanf("%d",input);這句語句從緩衝區接受數字,而當我們輸入字母或其他時,字元就一直留在緩衝區,迴圈第二次時,scanf再次從緩衝區獲取時,還是不是數字,就相當跳過了scanf這一句......從而,造成死迴圈。

如何解決呢?

1.在scanf這一句後面加一句getchar(); 用於接受字元;

2.在scanf這一句前面加fflush(stdin); 這一函式用於清空緩衝區,但他並不適用於所有編譯器,遇到vs2015,gcc編譯器時,它就失效了

C語言中while語句裡使用scanf的技巧

今天友人和我討論了一段 是hdu的oj上一道題目的解,如下 include return0 起初,我以為 中while語句裡的按位取反運算子寫錯了,應該是邏輯非運算子。這時我在quora上找到了類似的問題,我對其中一篇答案做了修改和翻譯 查閱scanf函式的man手冊,關於返回值的說明如下 函式返回...

C語言 scanf 總結

問題 對於我這種c語言菜鳥程式設計師來說,一碰到輸入第一想到的就是scanf,正是因為這樣在scanf裡吃了很多虧。好吧,這裡幫自己總結一下 函式原型 1 intscanf constchar format,scanf 函式是格式化輸入函式,它從標準輸入裝置 鍵盤 讀取輸入的資訊。其呼叫格式為 sc...

C語言 scanf 函式

scanf 函式是用來從外部輸入裝置向計算機主機輸入資料的。scanf 函式的一般格式 案例 已知圓柱體的底半徑radius 1.5,高high 2.0,求其體積。main 案例 已知圓柱體的底半徑為radius,高為high,求其體積。功能 說明函式scanf 的格式及作用。main 程式執行結果...