檔案操作 清空緩衝區

2021-07-08 18:48:40 字數 687 閱讀 8188

在進行輸入輸出操作或者檔案讀寫時,由於涉及到緩衝區的使用,可能遇到一些問題。

例如,scanf()函式用於從stdin輸入資訊,在從標準輸入緩衝區讀取資訊時,往往以'\n'作為結束輸入的標誌,但是換行符'\n'仍然殘留在緩衝區中,下次再次從標準輸入讀取資訊時,殘留的換行符'\n'會被當做有效資訊讀取,即,上一次的輸入影響了下一次的輸入。

再例如,通過printf()函式向標準輸出列印資訊時,待輸出的資訊可能遲遲沒有顯示在標準輸出上,因為資訊還保留在標準輸出緩衝區中。有時候向檔案中寫入的資訊無法完整儲存,可能也是由於緩衝區中的內容沒有及時重新整理到檔案中。

在遇到這些問題時,可以通過清空緩衝區的方法解決。

c語言中用於清空緩衝區的函式是fflush(),使用時需要包含標頭檔案,函式原形如下:

int fflush(file * stream);

如果stream是輸出檔案,則fflush()的作用是與之相關聯的輸出緩衝區中的檔案立即寫入該檔案;如果stream是輸入檔案,則fflush()的作用是清空與之相關聯的輸入緩衝區中的內容。

清空輸入緩衝區

清空輸入緩衝區 cin.clear 清除錯誤標記,比如要求輸入int型,但我們輸入了char型,就會導致輸入錯誤,產生錯誤標記 cin.sync 清空輸入緩衝區 cin.ignore n,ch 第乙個引數是清空輸入緩衝區的大小,第二個引數是終止字元 注 終止字元也會被丟棄 常用形式有以下兩種 cin...

我這樣清空緩衝區

若緩衝區是在棧內分配是的則不需要手動清除,因為系統會幫你做完成這個工作,但是如果緩衝區分配在堆內的話就要自己手動清除了,不然會發生記憶體洩露。產生的問題就是占用的資源不能及時釋放,從而影響系統效能。清理緩衝區的三種方法 fflush stdin fflush stdin 在vc上可以使用,但是其他編...

C語言 清空緩衝區

考慮到下面的 includeint main while n 1 return 0 就是輸入乙個數,然後輸出這個數,如果輸入 1 就表示結束。但是如果使用者不小心輸入了乙個字母 或者其他非數字字元,就會發生死迴圈,這是為什麼呢?這是因為scanf函式是從緩衝區讀取乙個指定格式的變數。並且返回成功讀入...