scanf讲解

(一)scanf的基本格式
scanf(格式控制, 地址列表);
例如:
int a; scanf(“%d”,&a);
int a,b; scanf(“%d%d”,&a,&b);
(1)格式控制符必须用英文的双引号括起来。
(2)变量名前的&地址符号不能缺少。但是当以%s读入数据时,不能加&,因为字符串变量名代表首地址。

(二)scanf的基本原理
(1)scanf功能是读取我们输入的数据,通过匹配格式控制符把读取的数据存入对应变量。它以空格、制表符、回车符为读取的结束符。

(2)其中,牵涉到一个概念——“缓冲区”。
我们输入的数据是先存放在“缓冲区”,可以把它理解为一个队列。输入数据从队列的右端进入,而scanf读取数据是从队列的左端取出。注意:与格式控制符不匹配的数据还停留在缓冲区中。

例:scanf(“%d%d”,&a,&b);
当我们输入23 空格34回车时,scanf先读取23当遇到输入的空格时,表示第一个数据读取结束,按照第一个%d的格式,把读取的23存入变量a中;然后再读取34当遇到输入的回车时,表示第二个数据读取结束,按照第二个%d的格式,把读取的34存入变量b中。因此,变量a的值为23,b的值为34。

(三)scanf的格式设置
(1)格式控制符之间有空格、回车符、制表符
例如:int a,b;
scanf(“%d %d”,&a,&b);
scanf(“%d %d”,&a,&b); scanf(“%d\n%d”,&a,&b); scanf(“%d\t%d”,&a,&b);
输入数据要求:
输入的数据之间可以是空格、制表符、回车符,也可以是混合的空格,制表符,回车符。
输出结果说明:
scanf是以空格、制表符、回车符为结束符。但scanf格式控制符中的空格、制表符、回车符的作用是吸收空格、制表符和回车符。因此,当输入第一个数之后,再输入回车(制表符、空格)都被吸收了,scanf等待下一个数的输入,当第二个数输入后再回车(空格、制表符)时,由于第二个%d后面没有空格(制表符、回车符),因此,这个回车(空格、制表符)没有被吸收,此时scanf就以回车(空格、制表符)为结束符,停止读取。根据%d%d的格式把读取的两个数分别赋值给a和b。因此,不论格式控制符之间有没有空格、制表符、回车符,有多少空格、制表符、回车符都是一样的效果。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值