一、 scanf的基本使用
1、当我们有了变量,我们需要给变量输⼊值就可以使⽤ scanf 函数,如果需要将变量的值输出在屏幕上
的时候可以使⽤ prinf 函数。
例如:
#include<stdio.h>
int main()
{
int score = 0;
//请输入成绩
scanf(“%d",&score);
//请输出成绩
printf("%d\n",score);
return 0;
{
scanf()
用于读取用户的键盘输入,程序运行到这句代码时就会停下来,等待用户从键盘输入信息,用户输入信息后按下回车键,scanf()就会读取用户输入的信息,将其存入变量。
scanf()
的原型在头文件stdio.h
scanf()
和printf()
的用法基本相同
例如:
int a = 0;
scanf("%d",&a);
这里的%d也是占位符,&为取地址运算符,scanf()
处理数值占位符时,会⾃动过滤空⽩字符,包括空格、制表符、换⾏符等。
int a = 0;
//用户输入 " 12"
scanf("%d",&a);
printf("%d\n",a);//输出12
scanf()
处理用户输入的原理是,用户的输入先放入缓存,等到按下回车键后,按照占位符对缓存类容进行解读。
2、scanf()
的返回值
scanf()
的返回值有三种情况
(1)scanf()
成功读取了几个值,就返回几。
scanf("%d%d%d",&a,&b,&c);//返回值为3
(2)scanf()
一个也没有读到,就返回0。
(3)scanf()
如果在成功读取数据之前,读取错误或者遇到文件的结尾,就会返回EOF(-1)。
#include<stdio.h>
int main()
{
int a = 0;
int n = scanf(”%d",&a);//输入时按ctrl+z(一次或三次),n为EOF(-1)
printf("%d\n",n);
return 0;
}
3、占位符
sxanf()和printf()占位符的使用相似,但是需要注意的两种情况。
(1)%c不会忽略起首的空白字符,如果需要忽略的话,需要在%c的前面加上空格。
scanf(" %c");
(2)%s从当前第一个非空白字符读取,知道遇到空白字符为止。
(3)scanf()在读取字符串时不会检测字符串是否超出了数组长度,因此,我们可以使用%[m]s来限制字符串读取长度。
例如:
scanf("%3s",&n);//字符串的长度为3
4、赋值忽略符
只要把*放在任何一个占位符%后面,该占位符就不会有返回值,解析后就会被扔掉。
//用户输入2014/12/12
scanf("%d%*c%d%*c%d",&a,&b,&c);
//输出
printf("%d-%d-%d",a,b,c);//输出为2014-12-12