scanf函数

简介: 该文介绍了C语言中`scanf`函数用于输入变量值,而`printf`函数用于输出变量值。`scanf`在读取数值时会自动过滤空白字符,允许数据间有空格或换行,不影响解析。`scanf`返回值表示成功读取的变量数,0表示未读取或匹配失败,EOF表示读取错误或文件结尾。常见占位符包括 `%c`(字符)、`%d`(整数)、`%f`(浮点数)、`%s`(字符串)和`%[]`(指定字符集)。对于`%c`,不会忽略空白字符,但可加空格跳过前导空白。文章还提及在VS2022中,`scanf`被认为是不安全的,推荐使用`scanf_s`,并提供了如何在VS中使用`scanf`的解决方法。

当我们需要给变量输入值的时候就需要用到scanf函数


如果需要将变量的值输出到屏幕上则可以使用printf函数


如:


结果为:



一次输入多个变量时:


scanf("%d%d%f%f",&a,&b,&c,&d);


scanf函数处理数值占位符时,会自动过滤掉空白字符,包括括号,制表符,换行符等


所以输入的多个数据之间有一个或多个空格不影响scanf函数解读数据,另外,使用回车键将数据分成几行也不影响解读



结果为:



当输入:1 2 3.1 4.2时,输出结果为:1 2 3.1 4.2


当输入123.14.2时,(数值之间没有加空格),输出结果为12

 

 

 

在VS2022编译器中会表示scanf函数是不安全的,建议使用scanf_s来替代


scanf_s是VS提供的函数,在其他编译器中可能不适用,所以VS也会提示在代码前加上:#define _CRT_SECURE_NO_WARNINGS 1


所以如果想在VS上使用scanf函数


在. c文件的第一行加上:


#define _CRT_SECURE_NO_WARNINGS 1


但每次加这一行不方便,有什么方法自定加呢?


在VS上新建文件的时候,都是拷贝newc++file. cpp这个文件,所有的.c/.cpp文件都是拷贝newc++file. cpp这个文件的,所以如果在newc++file. cpp文件的第一行加上#define _CRT_SECURE_NO_WARNINGS 1以后新建的文件中自然就有这句代码


操作:借助一个小工具everything来搜索newc++file. cpp找到具体路径,然后右击打开记事本或者其他,在其中输入:


#define _CRT_SECURE_NO_WARNINGS 1

即可



VS认为不安全的函数还有:


strcpy    strcat



scanf()处理数值占位符时,会自动过滤空白字符, 包括空格、制表符、换行符等。


所以,用户输入的数据之间,有一个或多个空格不影响 scanf() 解读数据。另外, 用户使用回车键, 将输入分成几行,也不影响解读。


scanf的返回值


scanf() 的返回值是一个整数, 表示成功读取的变量个数。


如果没有读取任何项,或者匹配失败,则返回0。如果在成功读取任何数据之前,发生了读取错误或者遇到读取到文件结尾,则返回常量 EOF。

占位符


scanf函数常用的占位符如下,与printf的占位符基本一致


%c:字符


%d:整数


%f:float类型浮点数


%lf:double类型浮点数


%lf:long double类型浮点数


%s:字符串


%[]:在方括号中指定一组匹配的字符,(比如%[0-9]),遇到不在集合之中的字符,则直接跳过


上面所有占位符之中,除了%c 以外,都会自动忽略起首的空白字符。 %c 不忽略空白字符,总是返回当前第一个字符,无论该字符是否为空格。


如果要强制跳过字符前的空白字符,可以写成 scanf(" %c", &ch) , 即%c 前加上一个空格, 表示跳过零个或多个空白字符。

目录
打赏
0
1
1
0
18
分享
相关文章
电商ERP系统中电商API接口的应用
电商API接口在电子商务中扮演着至关重要的角色,它们允许开发者将电商功能集成到自己的应用程序中,实现商品检索、订单处理、支付、物流跟踪等功能。以下是关于电商API接口的应用:
阿里云域名购买注册流程_创建信息模板_域名实名认证全流程
阿里云域名注册指南:访问[阿里云域名注册入口,查询并注册心仪域名,选择后缀,加入清单后结算。价格因后缀而异,如.com首年78元。创建域名信息模板完成实名认证,首次需上传资料。获取优惠口令并使用可享折扣
MySQL与Redis协同作战:优化百万数据查询的实战经验
【10月更文挑战第13天】 在处理大规模数据集时,传统的关系型数据库如MySQL可能会遇到性能瓶颈。为了提升数据处理的效率,我们可以结合使用MySQL和Redis,利用两者的优势来优化数据查询。本文将分享一次实战经验,探讨如何通过MySQL与Redis的协同工作来优化百万级数据统计。
443 5
|
11月前
|
怎么用redigo操作redis?
本文介绍了使用Go语言的`redigo`库操作Redis数据库的方法。`redigo`支持Redis的所有命令,可通过`go get github.com/gomodule/redigo/redis`安装。文章详细讲解了如何建立Redis连接、执行基本的字符串操作(如设置与获取键值)、设置键值过期时间、判断键值是否存在等,并进一步演示了对Redis的数据结构如List、Set、Hash及ZSet的操作方法。此外,还提供了使用连接池以提升性能的示例。值得注意的是,`redigo`自身并不支持Redis集群功能,如需使用需引入额外的库。
153 1
云原生数据库PolarDB MySQL版评测报告
云原生数据库PolarDB MySQL版评测报告
126 4
PHP杂货铺家庭在线记账理财管理系统源码
家庭在线记帐理财系统,让你对自己的开支了如指掌,图形化界面操作更简单,非常适合家庭理财、记账,系统界面简洁优美,操作直观简单,非常容易上手。
250 1
Nacos 1.4.1核心功能组件及使用入门
以上步骤提供了 Nacos 1.4.1 的基本使用概览,具体的配置和使用可能根据你的环境和需求有所不同。
385 6
2024年甘肃省职业院校技能大赛高职组“信息安全管理与评估”样题(二)-1
2024年甘肃省职业院校技能大赛高职组“信息安全管理与评估”样题(二)
2024年甘肃省职业院校技能大赛高职组“信息安全管理与评估”样题(二)-1
云效产品使用报错问题之不知道云效api需要什么权限如何解决
本合集将整理呈现用户在使用过程中遇到的报错及其对应的解决办法,包括但不限于账户权限设置错误、项目配置不正确、代码提交冲突、构建任务执行失败、测试环境异常、需求流转阻塞等问题。阿里云云效是一站式企业级研发协同和DevOps平台,为企业提供从需求规划、开发、测试、发布到运维、运营的全流程端到端服务和工具支撑,致力于提升企业的研发效能和创新能力。
AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等

登录插画

登录以查看您的控制台资源

管理云资源
状态一览
快捷访问