scanf函数
1.功能
scanf ()是C语言中的一个输入函数,作用是通过键盘给程序中的变量赋值,可以按用户指定的格式从键盘上把数据输入到指定的变量之中;基本语法格式为“scanf (“格式符”,输入参数)”。 scanf ()是C语言中的一个输入函数。
2.格式
①格式一
scanf("输入控制符", 输入参数);
(1)功能
将从键盘输入的字符转化为“输入控制符”所规定格式的数据,然后存入以输入参数的值为地址的变量中。
下面用一串代码来举个例子
#include <stdio.h>
int main()
{
int a;
a = 114514;
printf("a = %d\n", a);
return 0;
这串代码很简单,最后打印结果不用说都知道a=114514,但是对于这个值是不是已经固定为114514了,而不能是其他的值,很多时候我们希望这个值能够灵活一点,让它能够变成其他值,此时就要用到scanf函数。
# include <stdio.h>
int main()
{
int a;
scanf("%d", &a); //&a 表示变量 a 的地址,&是取地址符
printf("a = %d\n", a);
return 0;
}
对于以上的代码需要清楚两点
1.“输入控制符”和“输出控制符”是一模一样的。比如一个整型数据,通过 printf 输出时用%d输出,通过 scanf 输入时同样是用%d。
2.&是一个取地址运算符,&后面加变量名表示“该变量的地址”,所以&a就表示变量a地址。&a又称为“取地址a”,就相当于将数据存入以变量 a 的地址为地址的变量中。
(2)总结
scanf 语句的意思就是:从键盘上输入字符 1919810或者其他内容,%d将这几个字符转化成十进制数 1919810,最后通过“取地址 a”找到变量 a 的地址,再将数字 1919810 放到以变量 a 的地址为地址的变量中,即变量 a 中,所以最终的输出结果就是a=1919810,结果如下图。
②格式二
scanf("输入控制符非输入控制符", 输入参数);
下面用一串代码来演示这个形式
#include <stdio.h>
int main()
{
int a;
scanf("a = %d", &a);
printf("a = %d\n", a);
return 0;
在 printf 中,所有的“非输出控制符”都要原样输出。同样,==在 scanf 中,所有的“非输入控制符”都要原样输入。==所以在输入的时候a=必须要原样输入。比如要从键盘给变量 a 赋值 114514,那么必须要输入a=114514才正确,少一个都不行,否则就是错误,结果就是a=0
如下图所示
错误的
正确的
3.总结
- 在 scanf 的“输入参数”中,变量前面的取地址符&不要忘记。
- scanf 中双引号内,除了“输入控制符”外什么都不要写。
- “输出控制符”和“输出参数”无论在“顺序上”还是在“个数上”一定要一一对应。
- “输入控制符”的类型和变量所定义的类型一定要一致。对于从键盘输入的数据的类型,数据是用户输入的,程序员是无法决定的,所以在写程序时要考虑容错处理,这个稍后再讲。
数上”一定要一一对应。 - “输入控制符”的类型和变量所定义的类型一定要一致。对于从键盘输入的数据的类型,数据是用户输入的,程序员是无法决定的,所以在写程序时要考虑容错处理,这个稍后再讲。
- 使用 scanf 之前先用 printf 提示输入。