先来看这么一段代码
int a;
char c
scanf("%d", &a);
scanf("%c", &c);
想要用多个scanf来进行字符的输入,我们在输入字符前不能输入空白字符(空格回车),否则scanf在读取字符时就会自动把输入队列中的空白字符读取到%c中。
注意,只有一个 scanf()中的第一个 %c会遇到这样的问题
那么如何避免这种情况呢。
首先,把所有的输入放到同一个scanf()函数中就能避免这种情况。
如果非要使用多个scanf的话,那么有两种选择。
- 在输入字符之前,不要添加任何空白字符,直接接着上一个输入输入字符就行了
- 如果输入字符前非要添加空白字符的话,那么就用getchar()把这个空白字符吃掉就好了
//这样用
int a; char c;
scanf("%d", &a);
getcahr();
scanf("%c", &c);
这样就可以在两个输入之间添加空白字符了
同样的,C++中,使用 cin对象进行输入时,也会遇到类似问题,解决方法也是类似的:用cin.get()吃掉