关于scanf

本文详细介绍了scanf函数的使用,包括输入值传递地址、处理占位符时的空白字符过滤、数据缓存机制以及返回值含义。特别强调了scanf在遇到小数或非预期输入时的行为。
摘要由CSDN通过智能技术生成

1.scanf基本用法:

int a=0;
int b=0;
float c=0.0f;
float d=0.0f;
scanf("%d%d%f%f",&a,&b,&c,&d);

scanf传递的不是值而是地址,即将变量i的地址指向用户输入的值,可以理解为将值放到i里面去。

2.Scanf处理占位符时,会自动过滤空白字符,包括空格、制表符、换行符等。输入数据时应该要有明显的可以让编译器去识别的标识,例如空格,把数字隔开方便编译器去识别,用多个空格也不影响scanf解读数据,回车也是。

3.Scanf处理数据的原理:用户的数据先放入缓存当中,按下回车后按照占位符进行解读解读用户输入时,会从上一次解读遗留的第一个字符开始知道读完缓存,或者遇到第一个不符合条件的字符为止。

解释:

int a=0;
float b=0.0f;
scanf("%d",&a);
printf("%d\n",a);
scanf("%f",&b);
printf("%f\n",b);

当我输入“          -13.45e12# 0” 并且还没有按下回车的时候,这一串东西就在缓存中存放着,按下回车后,编译器开始读取数据,由于第一个是%d所以要读取整数,所以当它读到13后面的小点的时候停下,所以把-13给了x然后打印,接着继续读,从这个小点开始读,读到#结束,后面的不读了,结果如下:

由于小数在内存中有可能无法精确保存。

Scanf的返回值是个整数,表示的是成功读取的变量的个数。如果没有读取任何项或者匹配失败则会返回0,如果读取过程中读取错误或者读到了文件的末尾,则会返回常量EOF(end of file,是一个文件结束标志,其值是-1)。

以上就是关于scanf的基本知识点了,如有错位或者纰漏,麻烦大佬们斧正或者补充。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值