C語言裡的scanf連續輸入出錯問題

2021-10-22 16:59:34 字數 911 閱讀 2441

今天在看**時發現乙個有趣的東西,下面看一段**

可以看到輸入輸出出現了問題,那是什麼問題呢,經過網上查閱應該是快取的問題,就是說第一次輸入account時的enter回車也被快取到了裡面,所以說清一下快取就可以解決這個問題,清理剩下的快取有三種方法,分別是利用系統自帶的fflush方法、再次讀取乙個字元、以及自定義。於是乎修正**如下:

#define _crt_secure_no_warnings

#include

#include

using

namespace std;

// 自定義清快取函式

void

safe_flush

(file* fp)

intmain()

執行結果如圖所示,看起來他完成了任務。

但是,事實真的是這樣嗎,當然沒這麼簡單,c設計怎麼會允許這種問題呢,所以簡單的輸入輸出應該不會這麼脆弱。經過檢查,就是寫**時寫反了。原有的%d寫成了d%。不信你看看!

懊惱啊,寫**還是要仔細呀!

C語言使用scanf輸入

scanf 函式結構 scanf 函式被用來從stdin讀入資料,並且在程式中儲存資料。預設,這個stdin流是來著鍵盤輸入。scanf 的函式結構與printf 類似 int i scanf d i d 是乙個佔位符,說明這個地方有乙個變數,並且為整型變數 是個位址符,表明這個地方放置位址,i的意...

c語言裡面用scanf連續輸入字元型資料常見問題

include include int main 很簡單的乙個程式,看起來應該沒有問題,執行結果理論上應該像這樣 但是實際上是這樣 其中的原因就在於scanf是從標準緩衝區中讀取輸入的字元的,所以想上面那樣寫的時候字元型變數j接收的就是輸入i之後輸入的那個回車鍵。解決方法 1.用fflush std...

C語言使用scanf連續輸入字串出現的問題

include intmain 一段看上去很簡單的 即使是c語言初學者也能看懂。可是在執行的時候卻出現了問題 輸入a後按下回車 用空格隔開之後再按下回車 相信和我一樣的大部分初學者,看著自己天衣無縫的 百思不得其解。解決方法 在第二個 c前加上空格,來抵消之前輸入的空格 回車 include int...