對C語言的瞭解, 而不只是單單的在課本中學到的那些理論, 平時乏味的課程, 通過自己動手親自編寫, 變的生動有趣,
而在自己動手的過程中,
不過, 通過幾天的實戰, 逐漸積攢了一些經驗, 有些錯誤可以很快就看出來。 學習進步,少俠請駐足:C/C++ 學習交流, 491994603(8群 )
我們經常在編寫C語言基礎代碼的時候,會遇到如下現象:
更多資料,少俠請駐足:C/C++ 學習交流, 8群 491994603
為什麼會這樣呢?那是因為scanf是從緩衝區中通過格式控制字元獲取字元,而第一次輸入,輸入100 按下回車(),
%d只能沖緩衝區中獲取一個100,剩下的一個字元還在緩衝區,而第二次輸入,直接從緩衝區中換取了,所以字元直接為''.示意圖:
更多資料,少俠請駐足:C/C++ 學習交流, 8群 491994603
如何避免?通過stdlib.h中的fflush函數清空緩衝區
更多資料,少俠請駐足:C/C++ 學習交流, 8群 491994603
2.巧用getchar獲取剩餘字元
更多資料,少俠請駐足:C/C++ 學習交流, 8群 491994603
緩衝區有意思的東西控制台視窗是有輸入緩衝區的, 當你按鍵後程式沒有來得及處理, 系統會將按鍵緩存, 等到程式獲取按鍵的時候, 系統會把緩衝區裡面之前的按鍵返回。
更多資料,少俠請駐足:C/C++ 學習交流, 8群 491994603
請自己執行一下前面的程式, 在 5 秒延時內隨便按鍵, 等到延時結束, 可以看到程式可以讀出剛才的按鍵。
但是有些時候, 我們是不需要保留之前的按鍵的。 我們可以借助 Windows 提供的控制台 API 實現:
更多資料,少俠請駐足:C/C++ 學習交流, 8群 491994603
這段代碼只在前面代碼的基礎上,增加了一行清空鍵盤緩衝區的函式呼叫。然後執行程式後可以看到,最後的輸出迴圈無法獲取到之前的任何按鍵。今天分享就到這裡結束了,歡迎長久駐足哦. 8群 491994603.學習交流.
這個功能在遊戲中會很有用。例如,遊戲開始之前,會有些等待(例如過場動畫)。正式遊戲開始時,應該清空按鍵緩衝區,防止使用者在等待期間的按鍵影響遊戲操作。
更多資料,少俠請駐足:C/C++ 學習交流, 8群 491994603
這段代碼只在前面代碼的基礎上,增加了一行清空鍵盤緩衝區的函式呼叫。然後執行程式後可以看到,最後的輸出迴圈無法獲取到之前的任何按鍵。今天分享就到這裡結束了,歡迎長久駐足哦. 8群 491994603.學習交流.
這個功能在遊戲中會很有用。例如,遊戲開始之前,會有些等待(例如過場動畫)。正式遊戲開始時,應該清空按鍵緩衝區,防止使用者在等待期間的按鍵影響遊戲操作。