在C語言中,清空輸入緩衝區通常是為了清除任何殘留在輸入緩衝區中的資料,這些資料可能會干擾後續的輸入操作。以下是幾種清空輸入緩衝區的方法:
-
使用
fflush(stdin)
函式:這個方法在C語言標準中並不推薦,因為它並不被所有的編譯器和作業系統支援。
ffflush不是標準庫函式,在gcc下是不支援的,只有在VC6.0編譯器下,fflush才能完成它的正常功能。 -
使用迴圈讀取法:透過迴圈不斷地讀取緩衝區中的字元直到沒有更多字元為止。
以下是使用迴圈讀取法清空輸入緩衝區的示例程式碼:
#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
函式之後,輸入緩衝區就被清空了,確保後續的輸入操作不會受到之前殘留的資料的影響。