C語言清空輸入緩衝區

FBshark發表於2024-03-11

在C語言中,清空輸入緩衝區通常是為了清除任何殘留在輸入緩衝區中的資料,這些資料可能會干擾後續的輸入操作。以下是幾種清空輸入緩衝區的方法:

  1. 使用 fflush(stdin) 函式:這個方法在C語言標準中並不推薦,因為它並不被所有的編譯器和作業系統支援。
    ffflush不是標準庫函式,在gcc下是不支援的,只有在VC6.0編譯器下,fflush才能完成它的正常功能。

  2. 使用迴圈讀取法:透過迴圈不斷地讀取緩衝區中的字元直到沒有更多字元為止。

以下是使用迴圈讀取法清空輸入緩衝區的示例程式碼:

#include <stdio.h>
 
void clear_input_buffer() {
    char c;
    // 迴圈讀取直到讀取到的字元為'\n'或者檔案結束符(EOF)
    while ((c = getchar()) != '\n' && c != EOF) {
        // 空迴圈體,只是為了讀取並清除緩衝區中的字元
    }
}
 
int main() {
    int num;
    printf("請輸入一個數字: ");
    scanf("%d", &num);
 
    // 清空輸入緩衝區
    clear_input_buffer();
 
    printf("輸入已清空,按任意鍵結束程式\n");
    getchar();
    return 0;
}

在這個例子中,clear_input_buffer 函式透過迴圈讀取字元直到讀取到換行符('\n')或者檔案結束符(EOF),從而清空輸入緩衝區。在 main 函式中,呼叫 clear_input_buffer 函式之後,輸入緩衝區就被清空了,確保後續的輸入操作不會受到之前殘留的資料的影響。

相關文章