C語言中如何清空輸入輸出緩衝區,C語言如何清除鍵盤輸入快取區?

2022-03-02 08:15:49 字數 3335 閱讀 7413

1樓:風若遠去何人留

最簡單的是用fflush()函式。

此函式包含在stdio.h標頭檔案中,用來強制將緩衝區中的內容寫入檔案。

函式原型:int fflush(file *stream) ;

函式功能:清除一個流,即清除檔案緩衝區.

常用場合:

一、ff(stdin)重新整理標準輸入緩衝區,把輸入緩衝區裡的東西丟棄

fflush(stdout)重新整理標準輸出緩衝區,把輸出緩衝區裡的東西列印到標準輸出裝置上。

二、scanf()函式接收輸入資料時,遇以下情況結束一個資料的輸入:(不是結束該scanf函式,scanf函式僅在每一個資料域均有資料,並按回車後結 束)。

① 遇空格、「回車」、「跳格」鍵。

② 遇寬度結束。

③ 遇非法輸入。

鍵盤緩衝區就可能有殘餘資訊問題。

scanf()函式應該只是掃描stdin流,這個殘存資訊是在stdin中

解決就要在scanf()函式之後加個fflush(stdin)

三、寫檔案的時候 不會馬上進行物理磁碟的檔案讀寫,而是先寫入快取,當快取中內容達到一定程度後再寫

file *fp=fopen("a.txt","w");

fprintf(fp,"abcdef");

fflush(fp);

2樓:滄海雄風

flush(stdin) flush(stdin)是用來清空輸入緩衝區,通常是為了確保不影響後面的資料讀取,例如在讀完一個字串後緊接著又要讀取一個字元,此時應該先執行flush(stdin)。

例如 scanf("%s",tmp);

scanf("%c",&ch);

之間如果沒有flush(stdin);那麼ch中就接收的是換行了表現為直接跳過了這一步

c語言中如何清空輸入輸出緩衝區

3樓:虎姿淳于傲薇

最簡單的是用fflush()函式。

此函式包含在stdio.h標頭檔案中,用來強制將緩衝區中的內容寫入檔案。

函式原型:int

fflush(file

*stream)

;函式功能:清除一個流,即清除檔案緩衝區.

常用場合:

一、ff(stdin)重新整理標準輸入緩衝區,把輸入緩衝區裡的東西丟棄

fflush(stdout)重新整理標準輸出緩衝區,把輸出緩衝區裡的東西列印到標準輸出裝置上。

二、scanf()函式接收輸入資料時,遇以下情況結束一個資料的輸入:(不是結束該scanf函式,scanf函式僅在每一個資料域均有資料,並按回車後結

束)。①

遇空格、「回車」、「跳格」鍵。

②遇寬度結束。

③遇非法輸入。

鍵盤緩衝區就可能有殘餘資訊問題。

scanf()函式應該只是掃描stdin流,這個殘存資訊是在stdin中

解決就要在scanf()函式之後加個fflush(stdin)

三、寫檔案的時候

不會馬上進行物理磁碟的檔案讀寫,而是先寫入快取,當快取中內容達到一定程度後再寫

file

*fp=fopen("a.txt","w");

fprintf(fp,"abcdef");

fflush(fp);

4樓:匿名使用者

1、flush(stdin)重新整理標準輸入緩衝區,把輸入緩衝區裡的東西丟棄

fflush(stdout)重新整理標準輸出緩衝區,把輸出緩衝區裡的東西列印到標準輸出裝置上。

2、scanf()函式接收輸入資料時,遇以下情況結束一個資料的輸入:(不是結束該scanf函式,scanf函式僅在每一個資料域均有資料,並按回車後結束)。

① 遇空格、「回車」、「跳格」鍵。

② 遇寬度結束。

③ 遇非法輸入。

鍵盤緩衝區就可能有殘餘資訊問題。

scanf()函式應該只是掃描stdin流,這個殘存資訊是在stdin中

解決就要在scanf()函式之後加個fflush(stdin)。

5樓:匿名使用者

fflush(stdin)

或者:flushall()

c語言清除緩衝區的資料?

6樓:no1曉飛

要想實現a,b的輸入,先要打個回車確認後再給a,b賦值

7樓:徐霄沛

僅當輸入n時跳出。重新輸入ab前需要敲一個'n'確認。。

8樓:匿名使用者

system("cls")介面清除函式;

快取區的錯誤資料只能覆蓋當然也就是清除了,當你關了程式設計軟體時快取區的資料自動清除了。

c語言如何清除鍵盤輸入快取區?

c++中怎麼清除輸出緩衝區

9樓:育知同創教育

c++中使用cin.sync來清除快取區的資料流的。如果標示符沒有改變那麼即使清除了資料流也無法輸入。

所以cin.clear()和cin.sync()要聯合起來使用。

對於cin.clear()和cin.sync()參考以下程式:

#include

using namespace std;

intmain()

10樓:

std::cout.rdbuf()->pubsetbuf(p, n);表示用p[0] ..

p[n-1]來儲存緩衝的字元,pubsetbuf(0,0)表示不緩衝。也有可能系統本身就不許沒有緩衝。

std::cout.flush();把字元緩衝區清空,送到它該去的地方。

如果std::cout.sync_with_stdio(true);與c的標準輸出輸入共享一個緩衝區,則fflush(stdout)也可以清空c或c++的標準輸出輸入緩衝區。

如果想最保險的就呼叫std::cout.setf(std::ios_base::unitbuf);這樣每次輸出都直接送到字元該去的地方。

11樓:狂___暴擊

fflush(stdin);

給你個**,很詳細:

如何清除鍵盤緩衝區?(c語言)

12樓:匿名使用者

在輸入語句後使用fflush(stdin);

表示清楚標準輸入裝置(即鍵盤)的緩衝區。

13樓:匿名使用者

flush()一下就可以了

c語言中如何實現多組資料輸入輸出

c語言中有一個 標準輸入函式,即 scanf函式,它可以讀取輸入的任意格式版型別的資料。scanf函式也有返 權回值,返回型別為int型別,它返回成功讀入的專案的個數。如果它沒有讀取任何專案 當它期望一個數字而您卻鍵入了一個非數字字串時就會發生這種情況,scanf 會返回0。當它檢測到 檔案結尾 e...

c語言中如何輸入輸出字串

在c語言中,輸入輸出字串有以下兩種方式 1 用scanf printf輸入輸出。scanf printf是c語言的格式化輸入輸出函式,可以用於輸入輸出各種基礎型別,字串 char 也 其支援範圍內。格式化字元為 s。定義char str 100 輸入scanf s str 輸出printf s st...

c語言字元輸出,C語言輸入輸出字串

include int main d輸出的是有符號的整數,超過127的數字,在二進位制的最高位就是1了。那麼在後符號數的首位標記正負。如果是1,就是負數了。具體還是看看補碼運演算法則吧 c語言的字元是ascii編碼 標準的ascii碼只到127吧 沒記清楚 大概是這個數 char 的變數存的值太大直...