C語言,關於連續使用多個scanf()函數讀取字元的事

2020-10-18 16:00:27

先來看這麼一段程式碼

int a;
char c
scanf("%d", &a);
scanf("%c", &c);

想要用多個scanf來進行字元的輸入,我們在輸入字元前不能輸入空白字元(空格回車),否則scanf在讀取字元時就會自動把輸入佇列中的空白字元讀取到%c中。

注意,只有一個 scanf()中的第一個 %c會遇到這樣的問題

那麼如何避免這種情況呢。
首先,把所有的輸入放到同一個scanf()函數中就能避免這種情況。

如果非要使用多個scanf的話,那麼有兩種選擇。

  1. 在輸入字元之前,不要新增任何空白字元,直接接著上一個輸入輸入字元就行了
  2. 如果輸入字元前非要新增空白字元的話,那麼就用getchar()把這個空白字元吃掉就好了
//這樣用
int a; char c;
scanf("%d", &a);
getcahr();
scanf("%c", &c);

這樣就可以在兩個輸入之間新增空白字元了

同樣的,C++中,使用 cin物件進行輸入時,也會遇到類似問題,解決方法也是類似的:用cin.get()吃掉