关于scanf函数的理解和应用

1、scanf函数的介绍:

scanf函数本质上是一种“模式匹配”函数,它试图把输入的字符组与转换说明匹配起来。(转换说明即为%d...)。像printf函数一样scanf函数也是由字符串控制的。调用时,scanf从左边开始处理字符串中的信息。对于字符串中的每一个转换说明,scanf函数从输入的信息中找到相适应的与之匹配并且在必要时会跳过空格来读取数据。然后scanf读取输入的数据,直到遇到不属于此字符的数据时停止,如果成功读取则会继续读取直到不属于此转换说明,(余下的会留到下一次读取)或直接返回。

2、scanf函数的应用:

在寻找数的起始位置时,scanf函数会忽略空白字符(包括空格符、水平制表符、垂直制表符、换页符和换行符),因此我们可以将数字分为一行或者几行来输入。

实例:

当我们输入一个这样的数据时,scanf函数会把它看作一个字符流(','表示空格)

,,,10,,,-20,,,,.3,,,-4.0e3

scanf函数将会以一下方式处理数据:

1、转换说明%d。第一个非空字符为1,因为整数可以从1开始,所以scanf函数会继续读取下一个,发现0也是整数,scanf将会继续读写一个,发现‘-‘不能出现在整数数内,所以将’-‘放回原处,再将10存入变量i中。

2、转换说明%d。随后,scanf函数读取字符-、2、0和.因为整数不能包含小数点所以将小数点放回-20存入到变量j。

3、转换说明%f。接下来 scanf 函数读取字符.、3和-。因为浮点数不能在数字后边有负号,所以 scanf 函数把 0.3存人变量x中,而把宇符-放回原处。
4、转换说明%f。最后,scanf 函数读取宇符-、4.、0、e、3。所以 scanf 函数把-4.0e3存入变量x中。

输出结果:

3、关于scanf函数的输入问题:

有时候用户输入的格式可能不符合预定格式。

在上述实例中,如果用户输入“2020-01-01”,及聚会真确解读出年、月、日。要是用户输入的格式为“2020/01/01”,就会使scanf函数解析失败。

为了避免这种状况,scanf函数提供了一个赋值忽略符*只要把 * 加在任何占位符的百分号后⾯,该占位符就不会返回值,解析后将被丢弃;%*c 就是在占位符的百分号后⾯,加⼊了赋值忽略符 * ,表⽰这个占位符没有对应的 变量,解读后不必返回。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值