scanf 函数的使用

一、输入单个数据

举个栗子:
这里写图片描述
这里写图片描述
这里写图片描述

这里写图片描述

二、输入多个数据

1.默认的数据分割符

多个数据之间的分割符默认为:回车符制表符空格符

对于下面的语句:
这里写图片描述
输入时,三个整数之间的间隔是上面三种分割符的任意一种。

2.指定数据的分割符

a.如果指定的分割符是默认的三种分割符,则和没有指定效果一样。
b.如果是其他的分割符,输入时必须输入指定分割符

  • 如下面的四条语句所示:
    这里写图片描述
    下面的三条语句和第一条语句的执行效果一样。

  • 如下面的语句所示:
    这里写图片描述
    指定了第一个数据和第二个数据之间用 “,”分割,第二个数据和第三个数据之间用字符 “a” 分割。
    则输入时,需要按照下面的格式输入数据。
    这里写图片描述

3.指定数据的输入宽度

输入数据达到指定宽度时, scanf函数认为该数据输入完成。

  • 如下面的代码所示:
    这里写图片描述
    输入数据时,按照如下的格式输入:
    这里写图片描述

4.遇到非法输入时的处理

当输入的数据非法时,scanf会结束当前参数输入。

  • 如下面的代码所示:
    这里写图片描述
    按照如下的方式输入:
    这里写图片描述
    当输入字符“a”时,scanf函数会认为第一个整型的参数输入完毕。

三、输入结束的判断

满足下面条件时,输入回车后,结束scanf的输入。
1. 当输入的参数个数已经到达scanf要接收的参数个数。
2. 分割符不是默认的三种分隔符:回车符制表符空格符
3. 输入的数据, 对于所有的参数都是非法字符

举个栗子:
这里写图片描述
这里写图片描述

四、特殊的“%c”

当scanf函数的参数是%c的时候,scanf函数会把缓冲区的第一个字符返回回去,不管是什么。(不管是回车符 或 空格符 或 其他的任何字符)

五、字符串输入

举个栗子:
这里写图片描述

六、“垃圾回收”

最后输入的回车,会残留在操作系统的输入缓冲区中,影响下一次的输入。

如下面的代码所示:
这里写图片描述
输入时,当输入完123,按下回车后,直接执行到了打印输出的语句。程序并没有等待我们输入字符 。原因是:123被接收至变量 a 中,而 ‘\n’ 被接收至变量 c 中。
这里写图片描述
上述问题的解决办法是:添加一条 getchar(); 语句。去掉缓冲区中的 ‘\n’ 。

七、分割符结尾

以默认的分割符结尾,scanf会认为参数输入还没有完成,继续等待输入。
所以不要用这样的格式结尾。

举个栗子:
这里写图片描述
当输入完数字5.1,按下回车时,scanf函数并没有返回,需要再多输入一个数据,scanf函数才会退出。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值