剛學c的時候,遇到如下問題:
scanf("%d", n);
scanf("%c", ch);
本來我應該要按兩次回車輸入才結束吧。可是每次我輸入乙個整數,然後按回車準備輸入乙個字元的時候,輸入就結束了。
這個問題鬱悶了好久。書上也沒講。後來找到了方法,在scanf("%d", n)之後呼叫fflush(stdin)來重新整理輸入緩衝。再後來,看到了
更好的解決方法:
scanf("%d%*c", &n);
scanf("%c", &ch);
後來遇到了另乙個問題
scanf("%s", str1);
gets(str2)
這和上面類似。第一次回車之後,str2接收了乙個空串。也可以在之前用fflush(stdin)來解決。或者:
scanf("%s%*c", str1);
gets(str2);
還可以scanf("%s", str1);
getchar();
gets(str2);
總的說來,%c會把輸入緩衝中的第乙個字元做為輸入。gets()在遇到緩衝中第乙個'\n'是結束輸入。
一直習慣用fflush(stdin)來解決上面遇到的問題,直到有一次,做acm的題,本來題很簡單,可是我提交了10來次,
改了又改,還是wa。抓狂~~~
後來對照別人的**發現就是這個fflush(stdin)的區別。想來是fflush並不只是把上一次輸入的回車清楚掉,還把後面
的緩衝也清楚掉了。這造成輸入資料不完整,所以一直wa。都是沒有充分理解fflush(stdin)和當前環境造成的。
ps:要知其然還要知其所有然,要不然遇到問題時候,經常無從下手。懂得原理,以不變應萬變。
C 之標準輸入輸出
由於在公司,無法上傳,往後補上。關於c 的標準輸入輸出,其實就相當於c語言的scanf和printf,只不過c 用cin和cout這樣稱為流的機制。include 使用時需包含標頭檔案 using namespace std int main void int a 255 cout 相當於 c語言中...
C 標準輸入
cin是c 程式語言中的標準輸入流物件,即istream類的物件。cin主要用於從標準輸入讀取資料,這裡的標準輸入,指的是終端的鍵盤。此外,cout是流的物件,即ostream類的物件,cerr是標準錯誤輸出流的物件,也是ostream 類的物件。這裡的標準輸出指的是終端鍵盤,標準錯誤輸出指的是終端...
C 的標準輸入
昨天做題的時候,遇到乙個輸入是這樣的 3 4aaaa aaaa aaaa bbbbbbb bbbb ccc cccccccc d第一行輸入乙個整數n,表示接下來句子的數量,和另外乙個整數 這裡沒有作用,只是用來說明下面的乙個情況 接下來就是n個句子,每個句子以回車結束。我的想法是 int i,j c...