#include
#include
int main()
很簡單的乙個程式,看起來應該沒有問題,執行結果理論上應該像這樣:
但是實際上是這樣:
其中的原因就在於scanf是從標準緩衝區中讀取輸入的字元的,所以想上面那樣寫的時候字元型變數j接收的就是輸入i之後輸入的那個回車鍵。
解決方法:
1.用fflush(stdin);語句來清空緩衝區
**:
#include
#include
int main()
這樣就可以得到想要的結果了。
2.在scanf(「%c」,&j);中的%c之前加個空格->scanf(」 %c」,&j);這樣這個空格就可以抵消那個回車。
實際上這種情況通常會出現在定義了乙個字元型資料(eg.char flag;)然後在乙個for或者while迴圈裡面會多次輸入這個flag
eg.
#include
#include
#define maxsize 10
int main()
return
0;}
執行程式是會出現這樣的情況:
此時就可以使用上述兩個方法解決。
例外,在使用getchar()輸入字元的時候也會出現上述情況,此時除了可以用上述中方法一解決之外,對應上述的方法二可以可以改為:寫兩個getchar();
eg.
#include
#include
int main()
這個方法的原理與上述方法二是一樣的。 C語言裡的scanf連續輸入出錯問題
今天在看 時發現乙個有趣的東西,下面看一段 可以看到輸入輸出出現了問題,那是什麼問題呢,經過網上查閱應該是快取的問題,就是說第一次輸入account時的enter回車也被快取到了裡面,所以說清一下快取就可以解決這個問題,清理剩下的快取有三種方法,分別是利用系統自帶的fflush方法 再次讀取乙個字元...
C語言使用scanf輸入
scanf 函式結構 scanf 函式被用來從stdin讀入資料,並且在程式中儲存資料。預設,這個stdin流是來著鍵盤輸入。scanf 的函式結構與printf 類似 int i scanf d i d 是乙個佔位符,說明這個地方有乙個變數,並且為整型變數 是個位址符,表明這個地方放置位址,i的意...
c語言 輸入 用scanf 實現 gets的效果
scanf 2d n 讀取最大2位整數,後面的截斷 scanf 10s str 讀取最大10位字元scanf n scanf c 使緩衝區溢位,清空 fflush stdin 重新整理緩衝區 不是很通用匹配特定字元scanf abcd 只讀取字元abcd,順序不固定,遇到其他字元結束 a z 讀取a...