你应该知道的scanf

一:scanf能干什么

二:scanf的常用占位符有哪些

三:scanf的返回值是什么

一:1.我们知道,像printf()一样,scanf()也是一个库函数,它与printf()在同一个头文件——<stdio.h>中。并与printf()一同担负起输入和输出的重任。所以,scanf()被用来给变量输入值。下面是一个例子:

scanf()函数⽤于读取⽤⼾的键盘输⼊。 程序运⾏到这个语句时,会停下来,等待⽤⼾从键盘输⼊。 ⽤⼾输⼊数据、按下回⻋键后,scanf会处理用户输入的数据,并将其存入变量。

2.scanf()的基本用法

scanf()的格式是这样的

 我们可以看到他由两部分组成,第一部分是格式字符串用来放置占位符,因为c 语言中的数据都是有类型的,所以格式字符串用来告诉电脑用户输入的数据是什么类型。例如,上图中%d告诉电脑用户将要输入整型数据;第二部分用来存放用户输入的变量,并且有几个占位符,就要输入几个变量。下面是两个占位符对应两个变量的例子。

注意:变量前需要输入‘&’,该符号为取地址符号,因为scanf()传递的不是值,而是地址。如果变量是指针变量,则不需要加‘&’。

如果这⾥的变量是指针变量(⽐如字符串变量),那就不⽤加 ‘&’ 运算符。

scanf() 处理数值占位符时,会⾃动过滤空⽩字符,包括空格、制表符、换⾏符等。 所以,⽤⼾输⼊的数据之间,有⼀个或多个空格不影响scanf() 解读数据。另外,⽤⼾使⽤回⻋键,将输⼊分成⼏⾏,也不影响解读。

scanf() 处理⽤⼾输⼊的原理是,⽤⼾的输⼊先放⼊缓存,等到按下回⻋键后,按照占位符对缓存 进⾏解读。 解读⽤⼾输⼊时,会从上⼀次解读遗留的第⼀个字符开始,直到读完缓存,或者遇到第⼀个不符合条件的字符为⽌。例如:

第一个占位符%d碰到空格,继续读取,直到碰到整型数据13,当继续读取时碰到‘.’,停止读取。

第二个占位符从上一次读取遗留的第一个字符开始读取,直到遇到不符合条件的字符为止。(%f)读取到第一个‘#’停止。

所以占位符们都很安分,%d只读取整型数据,%f只读取浮点型数据。

那么除了整型和浮点型,scan()还有哪些占位符呢?

二:scanf()的常用占位符

%c :字符。

%d :整数。

%f : float 类型浮点数。

%lf :double类型浮点数。

%Lf : long double 类型浮点数。

%s :字符串。

%[] :在⽅括号中指定⼀组匹配的字符(⽐如 %[0-9] ),遇到不在集合之中的字符,匹配将会停止。

注意:%c 和比较矫情。当使用%c的时候,水平制表符,空格等一般不会被忽略。例如:c前有空格时,此时scanf识别的是空格,则printf()不能打印出‘c’。如果在%c前添加空格,则可以解决这个问题。

三:scanf的返回值

我们打开cpp官网可以找到关于scanf的介绍,有这样一句话:也就是说,运行成功以后,这个函数将会返回它成功读取的数据个数如上图,scanf读取到三个数据,则返回值为3,即ret=3。

如果读取之前发生错误,则返回EOF(-1)。在这里我使用了Ctrl+z组合键,在vs操作系统中使用三次以后就可以让scanf停止读取,则返回值为-1。

如有错误,还请指正。

  • 10
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值