簡體   English   中英

flushall() 不起作用 - 在 C 中

[英]flushall() doesn't work - in C

我必須使用getchar()函數一個一個地獲取許多字符。

使用該函數后我必須清理緩沖區,但flushall()不這樣做。 在函數的第二次迭代之后,它得到'\\n'作為輸入。 我嘗試使用fflush()_flushall() ,但沒有人成功做到這一點。 這是什么原因? 請幫忙。

注意:我必須使用getchar()

int i;
char c;
for (i = 0; i < 5; i++)
{
    c = getchar();      
    printf("%c", c);
    _flushall();
}

如果你想扔掉輸入緩沖區中的垃圾,一個好方法是

int c;
do c = getchar(); while (c != EOF && c != '\n');

這將丟棄並包括下一個換行符或文件結尾,這通常是您想要的。

如果您正在嘗試編寫一個程序,當用戶按下每個按鍵時,它會響應單個按鍵,這對您不起作用,但那是因為整個stdio.h界面對您不起作用; 您將需要使用其他東西,例如ncurses或 GUI“小部件”庫。

我實現了一個智能解決方案來清除輸入緩沖區。 該解決方案有 3 個優點:

  1. 如果輸入緩沖區中沒有任何內容,它不會阻塞。

  2. 如果輸入緩沖區中有字符,它會清除它們並且不等待按 Enter。

  3. 輸入緩沖區中的字符(由於用戶點擊鍵盤)將不會顯示在屏幕上。

這是我的解決方案

#include <conio.h>
#include <Windows.h>

void my_flushall()
{
    while (_kbhit())_getch(); // flushall
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM