回覆列表
-
1 # 使用者839644068187332
-
2 # aamed38541
首先,你的第二個 fflush(stdin);位置不正確,它一般用在cin的前面另外, fflush(stdin);只能清除輸入的內容,並不能清除輸入錯誤的狀態而在c++中,你可以用cin.sync();代替它並在它的前面加 cin.clear(); //清錯誤狀態
-
3 # 使用者6327460064169
C語言中清除記憶體緩衝區的函式是fflush( ),清除輸入緩衝區用fflush(stdin); 其中stdin表示標準輸入。舉例如下:
1、不加fflush函式:
2、加fflush函式:
清除標準輸入裝置(一般是鍵盤)的快取。 scanf()函式接收輸入資料時,遇以下情況結束一個數據的輸入:(不是結束該scanf函式,scanf函式僅在每一個數據域均有資料,並按回車後結束)。
① 遇空格、“回車”、“跳格”鍵。
② 遇寬度結束。
③ 遇非法輸入。 鍵盤緩衝區就可能有殘餘資訊問題。 scanf()函式應該只是掃描stdin流,這個殘存資訊是在stdin中 解決就要在scanf()函式之後加個fflush(stdin)。 flush(stdin)重新整理標準輸入緩衝區,把輸入緩衝區裡的東西丟棄 fflush(stdout)重新整理標準輸出緩衝區,把輸出緩衝區裡的東西列印到標準輸出裝置上。