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 前加上一个空格, 表示跳过零个或多个空白字符。

目录
相关文章
|
存储 Oracle Unix
关于小机 | 计算机百年趣味史(上)第8篇
小机即小型机(minicomputer),从名字上我们可以知道是体积会较小的机器,不过体积也是针对大机(mainframe)来说是,如果光从绝对体积上讲,那显然又不对。所以,小机是对特定时代一群类似机器的统称。我们来看下小机的关键历史。其历史时间是与大型机并行的。
3059 0
关于小机 | 计算机百年趣味史(上)第8篇
|
Web App开发 Android开发
【Android Web】腾讯X5浏览器的集成与常见问题
近年来,混合开发也越来越用的更多,而原生webview的各种坑,比如说 上传图片、文件问题、视频全屏问题(什么在微信上打开都是好的,你这怎么全屏不了)、版本差异问题,所以还是建议使用腾讯x5浏览器。
1744 0
|
10月前
|
机器学习/深度学习 算法 数据安全/隐私保护
基于GRU网络的MQAM调制信号检测算法matlab仿真,对比LSTM
本研究基于MATLAB 2022a,使用GRU网络对QAM调制信号进行检测。QAM是一种高效调制技术,广泛应用于现代通信系统。传统方法在复杂环境下性能下降,而GRU通过门控机制有效提取时间序列特征,实现16QAM、32QAM、64QAM、128QAM的准确检测。仿真结果显示,GRU在低SNR下表现优异,且训练速度快,参数少。核心程序包括模型预测、误检率和漏检率计算,并绘制准确率图。
280 65
基于GRU网络的MQAM调制信号检测算法matlab仿真,对比LSTM
|
10月前
|
人工智能 安全 程序员
一文彻底搞清楚HarmonyOS元服务
本文介绍Harmony OS的元服务,这是一种轻量级应用程序形态,具备秒开直达、纯净清爽、服务相伴、即用即走等特性,支持多设备运行,提升服务获取效率。元服务开发流程包括创建项目、UI开发、真机调试、打包测试及上架发布。欢迎关注,一起成长!
2723 0
|
10月前
|
人工智能 前端开发 API
MoneyPrinterTurbo:23.9K Star!这个AI把写文案+找素材+剪视频全包了,日更10条不是梦
MoneyPrinterTurbo 是一款功能强大的 AI 工具,支持通过主题或关键词自动生成视频文案、素材、字幕与背景音乐,并合成高清短视频,适合批量生成与多语言支持。
698 4
|
供应链 搜索推荐 数据挖掘
电商ERP系统中电商API接口的应用
电商API接口在电子商务中扮演着至关重要的角色,它们允许开发者将电商功能集成到自己的应用程序中,实现商品检索、订单处理、支付、物流跟踪等功能。以下是关于电商API接口的应用:
|
小程序 JavaScript 前端开发
微信小程序(十七)小程序监听返回键跳转事件(安卓返回也适用)
onUnload:function(){ wx.redirectTo({ url: '../index/index' }) wx.navigateTo({ url: '../index/index' }) wx.switchTab({ url: '../../member/member' }) }
1739 0
|
域名解析 运维 监控
网络故障排查的常用工具与方法:技术深度解析
【8月更文挑战第20天】网络故障排查是一项复杂而重要的工作,需要网络管理员具备扎实的网络知识、丰富的实践经验和灵活的问题解决能力。通过掌握常用工具和方法,遵循科学的排查流程,可以显著提高故障排查的效率和准确性。希望本文能为读者在网络故障排查方面提供有益的参考和启示。
1649 2
|
PHP 数据库 数据安全/隐私保护
PHP杂货铺家庭在线记账理财管理系统源码
家庭在线记帐理财系统,让你对自己的开支了如指掌,图形化界面操作更简单,非常适合家庭理财、记账,系统界面简洁优美,操作直观简单,非常容易上手。
390 1
|
人工智能 搜索推荐 Linux
一个集 AI + 工具 + 插件 + 社区为一体的Arc 浏览器风格AI客户端
一个集 AI + 工具 + 插件 + 社区为一体的Arc 浏览器风格AI客户端
558 0