一.Scanf函数
当创建一个变量时,给变量输入值可用Scanf函数,其作用为读取用户的键盘输入,输入数据后,按下回车,Scanf函数就回处理输入的数据,并将数据存入变量。
注:使用前仍需包括头文件stdio.h
代码:
#include <stdio.h>
int main()
{
int score;
printf("小明的数学成绩是:");
scanf("%d", &score);
printf("数学成绩是:%d\n",score);
return 0;
}
运行结果:
二.Scanf函数格式
scanf("%d",&score)
第一个参数:格式字符串,用来放占位符,其里面有多少个占位符,就有多少个变量
%:占位符的标志
d:表示整数
score::将输入键盘的整数存入变量score中
注:①变量前面必须加上&【指针变量除外】
②scanf函数传递的不是值,而是地址,即将变量的地址指向输入的值
三.Scanf函数的使用
1.对比printf输出格式:
代码:
代码1
#include <stdio.h>
int main()
{
int a,b,c,d;
scanf("%d%d%d%d", &a,&b,&c,&d);
printf("%d%d%d%d\n",a,b,c,d);
return 0;
}
代码2
#include <stdio.h>
int main()
{
int a,b,c,d;
scanf("%d%d%d%d", &a,&b,&c,&d);
printf("%d %d %d %d\n",a,b,c,d);
return 0;
}
运行结果1:
运行结果2:
2.对比scanf函数输入格式
错误输入:
此时只读取到一个整形数据212223,此时程序还在等待输入另外三个数据,所以不会输出
总结 :
scanf函数在处理输入数据的占位符时,会自动过滤掉空白字符,如空格,制表符,换行符等
代码:
#include <stdio.h>
int main()
{
int a;
float b;
scanf("%d%f", &a,&b);
printf("%d %f\n",a,b);
return 0;
}
运行结果:
输入数据为45.2896,函数先读取第一个数据为整数,即45,接着从小数点开始读取浮点数类型数据
-107374176.000000是一个未初始化的随机值
注:
scanf将字符串读入字符数组时,不会检测字符串是否超过数组长度
指定读入字符串的长度:%【数字】s,该数字表示读取字符串的最大长度,后面的将被丢弃
#include <stdio.h>
int main()
{
char a[11];
scanf("%10s", a);
printf("%s\n",a);
return 0;
}
运行结果:大家自己总结哦!
四.赋值忽略符
#include <stdio.h>
int main()
{
int a = 0;
int b = 0;
int c = 0;
scanf("%d-%d--%d", &a,&b,&c);
printf("%d %d %d\n", a,b,c);
return 0;
}
运行结果:对比可发现我们必须按照固定格式输入才可以输出所有数据
为了避免上述情况可以使用复制忽略符:*
#include <stdio.h>
int main()
{
int a = 0;
int b = 0;
int c = 0;
scanf("%d%*c%d%*c%d", &a,&b,&c);
printf("%d %d %d\n", a,b,c);
return 0;
}
运行结果: 即便此时加上/也可以正确输出