### scanf关键字
scanf标准函数可以从键盘得到用户输入的数字并记录到存储区里
这个标准函数是包含在stdio.h的头文件中的,因此需要在文件头部预处理这个头文件
#include <stdio.h>
scanf函数调用语句里需要使用存储区的地址表示存储区
scanf函数调用语句里需要使用占位符表示存储区的类型
int snum = 0;
scanf("%d", &snum);
scanf函数调用语句双引号里不要写不是占位符的内容,否则就会出现一些不必要的麻烦
scanf("%d\n", &snum); // 这样的情况是不允许的
可以在一条scanf函数调用语句中获得多个数字
int num1 = 0;
int num2 = 0;
scanf("%d%d", &num1, &num2); // 默认使用空格来分割输入的,也就是说,输入多个整型的时候使用空格作为分隔符
例如:输入的数据类型不相同的时候
int num1 = 0;
int num2 = 0;
scanf("%d%d", &num1, &num2);
如果用户输入的第一个数(num1)不是整型类型,而输入的是浮点类型的话,那么num2就不会有变化
scanf标准函数工作的时候需要使用输入缓冲区。
用户在键盘上输入的内容首先进入输入缓冲区,然后才能进入存储区。
先进入输入缓冲区的数字必须先被处理。
如果用户输入数据的格式和计算机要求的格式不一样,则后面输入的数字就没有机会被处理了,就卡在了错误的数据类型的那个数字哪里。
/*
输入缓冲区演示
*/
#include <stdio.h>
int main(){
int num = 0, num1 = 0;
printf("请输入一个数字:");
scanf("%d", &num);
printf("数字是%d\n", num);
printf("请输入一个数字:");
scanf("%d", &num1);
printf("数字是%d\n", num1);
return 0;
}
返回结果:
lanyulei@lanyulei-c:~/learn/biaoc/20180405/demo4$ ./a.out
请输入一个数字:1.1
数字是1
请输入一个数字:数字是0
以下两个语句可以把输入缓冲区里的第一个"\n"之前的内容和这个"\n"字符一起删除:
scanf("%*[^\n]");
scanf("%*c");