scanf的作用机制——到底怎么用scanf?(手把手教学版)

绪论

本章已解决的问题

1.scanf的使用格式

2.scanf的作用机制

3.scanf在空格字符上与printf的区别

4*拓展:scanf在C中和python中的input函数进行对比

一、scanf的使用格式

格式:scanf(“%d %f %c”,&a,&b,&c)

看到这个表达式,我知道你们有很多问题,别急,我来慢慢解答。

(1)%d表示占位符,后面&a表示存放输入值的变量。  但为什么有个&符号呢,答:这是取地址符。scanf必须通过地址进行解析,也就是说,双引号后面的变量,都要有&符号。

(2)这个%d和%f之间的空格等等需要用户手输吗?答:爱输不输,都可以。没有任何影响。

(3)用户如何输入不同类型的数据?答:请看下文。

二、scanf的作用机制

scanf到底是怎么识别输入值的?几个原则:1、忽略空白字符,但这意思不是说完全不要空白字符,有时候还是需要空白字符进行数据区别。如这个例子:

scanf(“%d %d %f”,&a,&b,&c)如果用户输入12345678.87,那么问题来了,此处没有空格,计算机怎么知道a,b,c分别是哪些数字?此处就要空格,如12 345 678.87,这个时候a,b,c值就很确定了。而且这个空格,爱多长就多长,甚至回车换行都可以,只要把数据隔开就可以。

那有人又问:什么时候不要空格?答:没有歧义时。如:scanf(“%d  %c”,&a,&b)用户输入23456789m,计算机不是傻子,这个时候计算机读数据的时候,当读到m时,发现不是整型数据,便开始下一种数据检索,即字符型,刚刚好读出m,此时就不用空格。当然用空格也可以。

可是又有这样一种情况,用户一不小心输入了占位符数据类型以外的数据,计算机会做何反应?

比如scanf(“%d %f ”,&a,&b)用户不小心输入了5678jj 89.7,计算机开始检索时,前面的5678符合整型,安然无恙,这时候读到j,发现不是整型了,计算机知道换数据类型了,自己也开始检索下一个占位符,可是,意外发生了,计算机发现j并不是%f类型,这道坎迈不过去,程序报错。

三、scanf在空格字符上和printf 的区别

在printf中,空格字符是正常输出的,如图。

但在scanf中,识别时会自动跳过空白字符,只留下一个作为分隔符。如图。

四*、scanf与python中的input进行对比

scanf中,输入的占位符以外的字符,均不会显示,相当于有点没用(虽然在返回值里有一点点用

如图,输入的中文并不会显示。

但是在python的input函数中,可以显示其他输入的字符

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值