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);
getchar();
scanf("%c", &c);

这样就可以在两个输入之间添加空白字符了

同样的,C++中,使用 cin对象进行输入时,也会遇到类似问题,解决方法也是类似的:用cin.get()吃掉

评论 18
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值