如图:
上面代码scanf("%d ",&a),一个占位符却输入了两次,但是读取的是第一次输入的值。
这是因为在占位符后面加了空格。
原因:格式字符串(也就是scanf的第一个参数中)出现了空白字符(空格、\n、\t之类的),那么scanf就会吃掉输入中接下来的空白字符。
也就是说,scanf会等到输入中出现了非空白字符才会返回。而scanf()函数的结束是回车,所以我们输入了2,回车,再输入3,当输入3时,空白字符的吃掉效果就消失了,这时再回车结束才会出结果。
解决方案:所以为了方便和不引起误会,建议在用scanf中尽量不用空白字符和转义字符,这样在运行程序时就会减少错误。