@求fflush(stdin)和fflush(stdout)用法
#include
void main()
這樣的乙個問題。
假如輸入的不是3個而是大於3個時候,是不是要清空緩衝區呢?
輸出的時候是不是也要清空一下呢?
謝謝您幫我解答。
3q@【gfxiang】:
一般不用。
btw: fflush()似乎只對輸出緩衝區清空,對輸入緩衝區清空可以用
do while ( c != eof && c != '/n');
【iu_81】:
flush(stdin)重新整理標準輸入緩衝區,把輸入緩衝區裡的東西丟棄
fflush(stdout)重新整理標準輸出緩衝區,把輸出緩衝區裡的東西列印到標準輸出裝置上。
【iu_81】:
scanf()函式接收輸入資料時,遇以下情況結束乙個資料的輸入:(不是結束該scanf函式,scanf函式僅在每乙個資料域均有資料,並按回車後結束)。
① 遇空格、「回車」、「跳格」鍵。
② 遇寬度結束。
③ 遇非法輸入。
鍵盤緩衝區就可能有殘餘資訊問題。
scanf()函式應該只是掃瞄stdin流,這個殘存資訊是在stdin中
解決就要在scanf()函式之後加個fflush(stdin)
【iu_81】:
fflush(stdout)重新整理stdout,因為printf是緩衝輸出,一般情況下stdout是行緩衝。
單程序環境中這個函式在這兒沒什麼用,在多程序/多執行緒時就有用了。
【comman_ndsc】:
#include
void main()
這樣的乙個問題。
假如輸入的不是3個而是大於3個時候,是不是要清空緩衝區呢?// 如果樓主是想把多餘的輸入清除的話,那就應該在輸入語句之後加一條 while(getchar() != '/n') ;這樣可以保證,輸入緩衝區中只有三個數。
輸出的時候是不是也要清空一下呢?// 這個到是很少用
謝謝您幫我解答。
#include
void main()
if(a > b)
d = a;
else
d = b;
if(c > d)
d = c;
printf("%d/n",d);
沒有你後面說的那個。
例子:
#include
#include
#include
#include
void flush(file *stream);
int main(void)
void flush(file *stream)
參考資料:tc_search
@fflush(stdin)重新整理標準輸入緩衝區,把輸入緩衝區裡的東西丟棄
fflush(stdout)重新整理標註輸出緩衝區,把輸出緩衝區裡的東西列印到標準輸出裝置上
@注:本文**
並非原創,收入本博,聊作記錄.
c/c++ 誤區:fflush(stdin) 1. 為什麼 fflush(stdin) 是錯的
首先請看以下程式:
#include
int main( void )
int i;
for (;;)
/* 沒有發生錯誤,清空輸入流。 */
/* 通過 while 迴圈把輸入流中的餘留資料「吃」掉 */
while ( (c = getchar()) != '/n' && c != eof ) ;
/* 使用 scanf("%*[^/n]"); 也可以清空輸入流, */
/* 不過會殘留 /n 字元。 */
printf("%d/n", i);
}return 0;
}/* c++ 版本 */
#include
#include // 為了使用numeric_limits
using std::cout;
using std::endl;
using std::cin;
using std::numeric_limits;
using std::streamsize;
int main()
// 讀到非法字元後,輸入流將處於出錯狀態,
// 為了繼續獲取輸入,首先要呼叫 clear 函式
// 來清除輸入流的錯誤標記,然後才能呼叫
// ignore 函式來清除輸入流中的資料。
cin.clear();
// numeric_limits::max() 返回輸入緩衝的大小。
// ignore 函式在此將把輸入流中的資料清空。
// 這兩個函式的具體用法請讀者自行查詢。
cin.ignore( numeric_limits::max(), '/n' );
cout << value << '/n';
}return 0;
}
關於C 的深入理解
1.關於引用和指標的理解 在我自己看來有兩個方面需要重視!第一是c 中,和 這兩個操作符的用法 1 可以作為宣告乙個指標 也可以用來作用為取值 代表位址指向的儲存單元 2 可以作為宣告乙個引用 也可以用來作用為取位址符號 第二是指標和引用的定義和性質區別 擷取自 inta 1 int p a int...
深入理解7816(2) 關於ATR
智慧卡 此處主要指接觸式 cpu卡 本身始終處於被動的狀態,所以終端裝置在和智慧卡進行資料互動的時候,需要首先給智慧卡發指令,智慧卡才會對應地給出應答。而智慧卡告訴終端的第一句話就是 atr,亦即 復位應答 想象一下,如果讓你為智慧卡設計乙個通訊協議,該怎麼設計?因為 atr是智慧卡上電後說的第一句...
深入理解7816(2) 關於ATR
智慧卡 此處主要指接觸式cpu卡 本身始終處於被動的狀態,所以終端裝置在和智慧卡進行資料互動的時候,需要首先給智慧卡發指令,智慧卡才會對應地給出應答。而智慧卡告訴終端的第一句話就是atr,亦即 復位應答 想象一下,如果讓你為智慧卡設計乙個通訊協議,該怎麼設計?因為atr是智慧卡上電後說的第一句話,所...