C语言中scanf函数用法详解+总结(保姆级)

&:取地址
即读取基本数据类型(如整数,浮点数等)的变量的地址,必须在变量名前加上&符号加粗样式,以便将用户输入的值存储到该变量的内存地址中。
然而当读取字符串时,则不需要在变量名前加&。因为字符串变量名在C语言中本身就是指向字符数组的指针,即地址

1.scanf的基本用法

scanf() 函数⽤于读取用户的键盘输⼊
程序运⾏到这个语句时,会停下来,等待用户从键盘输⼊
⽤⼾输⼊数据、按下回⻋键后, scanf() 就会处理⽤⼾的输⼊,将其存⼊变量。
它的原型定义在头⽂件 stdio.h 。
scanf() 的语法跟 printf() 类似。

语法形式:

1 scanf("%d", &i);

它的第一个参数是一个格式字符串, 里面会放置占位符(与printf的占位符基本一致),由此告诉编译器需提取数据的类型(这是因为C语⾔的数据都是有类型的, scanf() 必须提前知道⽤⼾输⼊的数据类型,才能处理数据。
它的其余参数就是存放用户输入的的变量,且占位符和变量的数量是一一对应的,格式字符串⾥⾯有多少个占位符,就有多少个变量!!!

深度理解:
上⾯⽰例中, scanf() 的第⼀个参数 %d ,表⽰⽤⼾输⼊的应该是⼀个整数。 %d 就是⼀个占位符, % 是占位符的标志, d 表⽰整数。第⼆个参数 &i 表⽰,将⽤⼾从键盘输⼊的整数存⼊变量i 。

当我们需要给变量输入值就可以使用scanf函数, 如果需要将变量的值输出在屏幕上的时候可以使用printf函数
例:

#include <stdio.h>
int main()
{
 int score = 0;
 printf("请输⼊成绩:");
 scanf("%d", &score);
 printf("成绩是:%d\n", score);
 return 0;
}

运行截图:
在这里插入图片描述

画图演示:
在这里插入图片描述
注:
标准输⼊⼀般指的就是键盘,标准输出⼀般指的就是屏幕

下面展示读入多变量的例子

1 scanf("%d%d%f%f", &i, &j, &x, &y);

上⾯⽰例中,格式字符串 %d%d%f%f ,表⽰⽤⼾输⼊的前两个是整数,后两个是浮点数,⽐如 1 -20 3.4 -4.03 。这四个值依次放⼊ i 、 j 、 x 、 y 四个变量。

重点:
scanf在处理数值占位符时,会自动过滤空白字符(空格,制表符,换行符 )。
所以,用户输⼊的数据之间,有一个或多个空格不影响 scanf() 解读数据。另外,用户使⽤回⻋键,将输⼊分成几行,也不影响解读。

重中之重: 解读用户是输入时,会从上次解读遗留的第一个字符开始,直到读完缓存,或者遇到第一个不符合条件的字符为止 !!!

#include <stdio.h>
int main()
{
 int x;
 float y;
 
 // ⽤⼾输⼊ "      -13.4512#01"
 scanf("%d", &x);
 printf("%d\n", x);
 scanf("%f", &y);
 printf("%f\n", y);
 return 0;
}

详解:!!!
上例中,第一次scanf()读取输入数据,%d会自动忽略起手空格,从-1开始读取,读取到 -13 停止,因为后面 . 不属于整数的有效字符。
第二次调用scanf时,就会从上一次停止解读的地方,继续往下读取。这一次读取的首字符为 . ,因为占位符是%f,所以会读到 . 4512,这是采⽤科学计数法的浮点数格式。后⾯的 # 不属于浮点数的有效字符,所以会停在这⾥。

2. scanf的常用占位符

常用占位符:
• %c :字符。
• %d :整数。
• %f : float 类型浮点数。
• %lf : double 类型浮点数。
• %Lf : long double 类型浮点数。
• %s :字符串。
• %[] :在⽅括号中指定⼀组匹配的字符(⽐如 %[0-9] ),遇到不在集合之中的字符,匹配将会停⽌。

铭记特例:

  1. 上述占位符中,除了%c外,都会自动忽略起首的空白字符。%c总是返回到当前第一个字符,无论该字符是否为空白字符。
    如果要强制跳过空白字符,可以写成scanf(" %c", &ch) 的形式,及在%c的前面加上一个空格,表示跳过空白字符。

  2. %s同样特殊,它的规则是,从当前的第一个非空白字符读起,直到遇到空白字符为止。

  3. 因此scanf() 不适合读取可能包含空格的字符串,比如书名或歌曲名。另外, scanf() 遇到 %s 占位符,会在字符串变量末尾存储⼀个空字符 \0 。

3.scanf的返回值

scanf的返回值是一个整数,表示成功读取的变量数
当没有读取到任何项或匹配失败,返回值为0
当读取数据之前,发生了读取错误,或者读到了文件末尾,返回值为EOF(-1)。
EOF - end of file ⽂件结束标志

在VS环境中按3次 ctrl+z ,这样才结束了输⼊。 即如果⼀个数字都不输⼊,直接按3次 ctrl+z ,输出的r是-1,也就是EOF

以上就是对scanf用法的详细分析,希望大家能多多受益, 一起加油哦!!!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值