一:scanf函数
(1)定义:
当我们有了变量,我们需要给变量输⼊值就可以使⽤ scanf 函数,如果需要将变量的值输出在屏幕上 的时候可以使⽤ prinf 函数
#include <stdio.h>
int main()
{
int score = 0;
printf("请输⼊成绩:");
scanf("%d"; &score);
printf("成绩是:%d\n", score);
return 0;
}
(2)用法:
1.0写法:
scanf("%d", &i);
变量前⾯必须加上 & 运算符(指针变量除外),因为 scanf() 传递的不是值,⽽是地址, 即将变量 i 的地址指向⽤⼾输⼊的值。1
如果这⾥的变量是指针变量(⽐如字符串变量),那就不⽤运算符。2
2.0 scanf的返回值:
scanf的返回值是一个整数,表示成功读取的变量的个数
如果没有读取任何项,或者匹配失败,则返回 0 。如果在成功读取任何数据之前,发⽣了读取错误或者遇到读取到⽂件结尾,则返回常量 EOF:
#include <stdio.h>
int main()
{
int a = 0;
int b = 0;
float f = 0.0f;
int r = scanf("%d %d %f", &a, &b, &f);
printf("a=%d b=%d f=%f\n", a, b, f);
printf("r = %d\n", r);
return 0;
}
EOF:是文件的结束标志3
(3)占位符
scanf() 常⽤的占位符如下,与 printf() 的占位符基本⼀致。
• %c :字符。
• %d :整数。
• %f : float 类型浮点数。
• %lf : double 类型浮点数。
• %Lf : long double 类型浮点数。
• %s :字符串。
• %[] :在⽅括号中指定⼀组匹配的字符(⽐如 %[0-9] ),遇到不在集合之中的字符,匹配将会停止
1.上⾯所有占位符之中,除了 %c 以外,都会⾃动忽略起⾸的空⽩字符。 %c 不忽略空⽩字符,总是返回
回当前第⼀个字符,⽆论该字符是否为空格4(在%c前面加空格可以强制跳过空白字符)
2. %s 不会包含空⽩字符,所以⽆法⽤来读取多个单词,除⾮多个 %s ⼀起使⽤。scanf() 遇到 %s 占位
符,scanf() 将字符串读⼊字符数组时,不会检测字符串是否超过了数组⻓度。所以,储存字符串时,
很可能会超过数组的边界,导致预想不到的结果。会在字符串变量末尾存储⼀个空字符 \0 。
(4)赋值忽略符
只要把 * 加在任何占位符的百分号后⾯,该占位符就不会返回值,解析后将被丢弃
#include <stdio.h>
int main()
{
int year = 0;
int month = 0;
int day = 0;
scanf("%d%*c%d%*c%d", &year, &month, &day);
return 0;
}