scanf输入时的小细节

scanf在输入两个连续的整型变量的时候是没有垃圾字符一说的
如:

scanf("%d %d", &a, &b);
printf("a = %d, b = %d\n", a, b);

输入:10/20
输出:a = 10, b = 1

输入:10=20
输出:a = 10, b = 1

我以为在scanf中的两个%d中间加一个空格会吃掉中间输入的垃圾字符,一直没想明白。后来问了老师,才知道垃圾字符是对char型输入字符的时候才有的,并没有 垃圾整型
但在输入整型数字的时候,两个数字中间加空格、回车、tab都会被吃掉

输入:10             20//中间有多个空格

输入:10

	 20//	两个数中间有多个回车

输入:10				20//中间多个tab

输出的都是:a = 10, b = 20

如果想要在两个整型中间输入字符就要在scanf中加上相对应地格式

scanf("%d/%d", &a, &b);
printf("a = %d, b = %d\n", a, b);

输入:10/20(回车)
输出:a = 10, b = 20 //正常输出

输入:10|20(回车)
输出:a = 10, b = 1 //b没能正确输入

输入:10=20(回车)
输出:a = 10, b = 1 //b没能正确输入

输入:10=(回车)
输出:a = 1, b = 1;

输入:#(回车)
输出:a = 47874144, b = 1 //a, b都没能正常输入,且a内为一个随机数

只要输入的格式和scanf中的格式不同,就会结束输入
所以scanf中的格式怎么写我们就要怎么输入

  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值