C语言中scanf与键盘缓冲区

1.屏幕输入与键盘缓冲区存储
根据ASCII表存储ASCII值。
若输入97+回车键,则缓冲区存储的是39h,37h,0Ah.

 

2.整型格式输入
scanf("%d",&a);
过程:
scanf按照%d格式最多扫描buffer中前4个字节。
如果在读取buffer前四个字节中没有遇到回车符,那么将4个字节按照%d转化为4个字节的整型。
如果在读取buffer前四个字节中遇到回车符,那么将回车符前面的几个字节按照%d转化为4个字节的整型。
4个字节的整数按照最低位字节,次低位,次高位,最高位依次存放在以&a开始的地址上。即&a放最低位字节,&a+1放次低位...
最后将回车符之前的和回车符本身从缓冲区中删除。
举例:
如果输入258+回车键,而a的定义有如下的几种可能:
char a;//地址&a的单个字节中存放的是最低位字节
char a[4];//地址&a的单个字节中存放的是最低位字节,&a+1放次低位...,即a[0]为02h,a[1]为01h,a[2]为00h,a[3]为00h。
char a[2];//地址&a的单个字节中存放的是最低位字节,&a+1放次低位...,即a[0]为02h,a[1]为01h。
对于以上的char a;和char a[2];来说,当4个字节的整数给&a开始的地址赋值时,会发生地址越界,这是很危险的。
所以a的定义至少4个字节才是安全的。

 

3.字符格式输入
scanf("%c",&a);
过程:

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值