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的基本知识点了,如有错位或者纰漏,麻烦大佬们斧正或者补充。