1 #include<stdio.h>2 #include<string.h>3 #include<stdlib.h>4 5 6 int main()7 8 {9 int a = 0;10 11 char buf[48] = {0};12 printf("輸入一個整數:");13 scanf("%d", &a);14 fflush(stdin); 15 printf("輸入一個字符串:");16 gets(buf);17 printf("buf = %s\n", buf);18 19 return 0;20 }程序如上,在終端運行結果如下:[hao@Roc 桌面]$ ./a.out輸入一個整數:5輸入一個字符串:buf = [hao@Roc 桌面]$ 為什么gets(buf)中接收的是一個空格或者是回車符,前面的fflush(stdin);不是清空了輸入緩沖區了嗎?
2 回答

慕的地8271018
TA貢獻1796條經驗 獲得超4個贊
flush(stdin)是用來清空輸入緩沖區,通常是為了確保不影響后面的數據讀取,例如在讀完一個字符串后緊接著又要讀取一個字符,此時應該先執行fflush(stdin)。
但要注意的是,此函數僅適用于部分編譯器(如VC6),但是并非所有編譯器都要支持這個功能(如gcc3.2)。這是一個對C標準的擴充。
你在linux下用的應該是gcc,因此可能不起作用。

守候你守候我
TA貢獻1802條經驗 獲得超10個贊
添加回答
舉報
0/150
提交
取消