scanf()避免讀入上次輸入的換行符

2021-09-11 19:47:10 字數 554 閱讀 2679

c語言的scanf()函式在接收輸入單個字元時會把上一次輸入的回車符號當做這次輸入的字元,造成無法正確的輸入字元資料。這恐怕是初學c的童鞋門遇到的最頭疼的問題了。今天給大家提供四種解決方法供借鑑。

1、在scanf()中使用』\n』遮蔽回車符號。

scanf("%d\n",&n); //使用』\n』過濾回車

scanf("%c",&c);

2、在scanf()格式串最前面新增空格,遮蔽回車字元

scanf("%d",&n);

scanf(" %c",&c); //%c前面加空格,過濾回車

3、在接收字元前,使用getchar()來讀取一次回車符號

scanf("%d",&n);

getchar(); //專門用來讀取上次輸入的回車符號

scanf("%c",&c);

4、在接收字元前,使用fflush()清空輸入流中緩衝區中的內容

scanf("%d",&n)

fflush(stdin); //清空輸入流緩衝區的字元,注意必須引入#include 標頭檔案

scanf("%c",&c);

scanf讀入字串與讀入字元的區別

今天下午比賽時候有道題用c 輸入輸出是超時的,所以準備換上c試試,發現幾個小問題 1 使用scanf c a 讀取a a是char型別 如果讀取之前有換行符或者空格,那麼a就會把之前的換行符或者空格讀取到,解決方法就是這之前先getchar 一下。2 而如果用scanf s str 讀取str 我發...

Scanf的輸入型別

scanf的輸入型別 1.格式字元與printf函式中的使用方式相同,以 d o x c s f e,無 u格式 g格式。2.可以指定輸入資料所佔列寬,系統自動按它擷取所需資料。3.後的 附加說明符,用來表示跳過它相應的資料。4.輸入資料時不能規定精度。5.根據格式字元的含義從輸入流中取得資料,當輸...

scanf函式的輸入

是不是也有人和我一樣,有時候輸入達不到自己預想結果呢?又很難找到自己的錯誤,覺得輸入的格式是對的,但是儲存卻不再在自己預想的位置。下面來講一下我關於字元和數字輸入的順序和方式的認識。首先我們來看第乙個 include includevoid main 是不是感覺是乙個非常簡單的程式。但有時候不懂也是...