关于scanf,你应该知道

在C语言中,除了printf函数用的最多以外,用的第二多的或许就是scanf函数了,不能说是所有代码都必须用到的,但至少大部分的代码都需要我们的scanf函数。如果说你的代码是个复杂的机器,printf函数是这个机器的出货口,那么scanf函数就是这个机器的进货口,是这个复杂机器必定不可缺少的一部分。
作为一个输入函数,scanf函数后面的括号包括了两部分内容,一是双撇号里的内容,它指定输入的数据按要求的格式输入,二是将输入的数据放到变量中,也就是赋值。但在实际使用中我们常常会在scanf函数上掉跟头。常见错误有以下几点:
1

忘记打“&”,“&”是地址符,也是scanf函数中最重要的一点吧,“&a”就是把输入的值给变量a。如果没有了“&”,计算机就会报错。就比如你做一个简单的a+b=?的程序如果像这样
在这里插入图片描述

漏了“&”,那么会跳出一个警告框,像这样会导致程序错误,同志们千万要注意。

2

在初次接触C语言时,由于受printf函数的影响,在规定好数据格式后打上了\n,

如图在这里插入图片描述

运行后发现像这样没有反应,在这里插入图片描述而当加上\n或者输入2两遍字符以后才出现结果以后才出现了我们想要的结果在这里插入图片描述

在这里插入图片描述

为什么会出现这个问题呢,原来scanf在每次回车之后从缓冲区中读取用户输入的字符,且当缓冲区非空时,输入回车之后才会自动结束。

当按照scanf("%d\n", &m)这种形式书写时,相当于你输入结束之后,缓冲区的数据被立即读取且被清空,缓冲区为空,scanf不退出,当你再输入一个字符后,缓冲区不空,再次回车后scanf退出。而变量的值,是你第一次输入的值。

至于缓冲区,在内存空间中预留了一定的存储空间,这些存储空间用来缓冲输入或输出的数据,这部分预留的空间就叫做缓冲区。有兴趣的萌新可以百度进一步了解缓冲区。

3

格式控制符之间加入了“,”,有些小伙伴习惯用逗号隔开数据,如
在这里插入图片描述
但发现输入数据时却输出了一个错误数据

在这里插入图片描述

正是你没有数字间以“,”间隔,导致错误。

所以在“”中你以什么间隔字符,输入数据时也要输入间隔用的字符

如果直“接%d%d”连接在一起,则只需要空格或者回车间隔开就行了。

如果想避免这些错误,最好的办法就是一边敲代码,一边检查咯。

(如有错误,谢谢斧正)

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值