#include<cstdio>
int main()
{
int a;
scanf_s("%d ", &b); //%d后有一个空格
printf_s("%d", a);
}
输入 5(空格)1 输出5
但是只输入一个5,按回车是没反应的,必须回车后再输入一个非空字符5才会被打印
为什么呢?
因为你还有一个逗号呢
scanf_s("%d ,", &b);
应该是
scanf_s("%d ,", &a);
输入
5 ,1
输出5
首先,scanf_s 中如果有分隔符,在控制台输入则必须也有分隔符。这个是基础。
其次,逗号是分隔符,空格是分隔符吗?不是!
因为 scanf_s("%d %d", &a, &b) 无论中间加了多少个空格,控制台只需一个空格即可。故空格不算分隔符。
更有力的说明是,输入上面的语句,在控制台输入1, 2 无空格,也是完全可以的。所以空格不算分隔符。
最后,空格只是键盘最下面那一条长杠吗?不是!
空格也包含回车。
这就是为什么在最后有一个空格时,无论输入多少个空格,多少个回车均无用,必须输入非空格和回车的字符才算输入完成。
总结:不要在最后加入空格,这样不仅无意义,出Bug还麻烦。
ps:题主最后的逗号是分隔符,但毫无作用。不信可以试试这个:
scanf_s("%d,,,,,,,,", &a);
直接输入5加回车可以运行。