C语言,关于连续使用多个scanf()函数读取字符的事

先来看这么一段代码

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()吃掉

猜你喜欢

转载自blog.csdn.net/Monody_theone/article/details/109131601