C语言(输出scanf()函数)

news2024/11/14 4:13:51

一.概念带入

scanf()把输入的字符串转换成整数,浮点数,字符或字符串。而printf()正好与其相反,把整数,浮点数,字符和字符串转换成显示在屏幕上的文本。所以scanf()在使用上面会和printf有很多一样的地方,不管是占位符还是修饰符都是一样的

这里要说明下scanf()是把输入值送到变量的内存地址上,而如果要读取基本变量类型,需要在变量名加上一个&来获取变量的地址值,而字符数组比较特别,字符数组本身就可以代表地址值,带小标就需要使用&来获取变量的地址值。

二.scanf()输入原理和返回值

scanf()函数每次读取一个字符,跳过所有的空白字符,直至遇到第一个非空白字符才开始读取。

scanf()函数放回成功读取的项目

scanf()会返回成功读取的项数。如果输入一个错误类型值则会返回0

这里教大家一个小技巧,在printf("scanf返回值为: %d\n", scanf("%d %d", &a,&b));这条语句中,scanf("%d %d", &a,&b)会先执行,然后返回值会给到%d占位符。

这里b输入了一个不匹配的占位符数据,所以scanf返回值为1

三.scanf()转换说明

1.转换说明

%a

浮点数十六进制P记数法

%c

单个字符

%d

有符号十进制数

%i

有符号十进制整数(与%d相同)

%e

浮点数,e记数法

%f

浮点数,十进制记数法

%g

根据值的不同,自动选择%f,%e

%o

无符号八进制整数

%p

指针

%s

字符串

%u

无符号十进制整数

%x

无符号十六进制整数

2.修饰符

0

对于数值,用前导0代替空格填充字段宽度。如果已经出现-标记,则忽略0标记

h

基本使用%hd,就是short的占位符

j

表示intmax_t或uintmax_t类型的值。而这些值就定义在stdint.h中。而intmax_t就算long long数据类型别名,uintmax_t就算unsigned long long 的别名,用lld和llud都可以。

ll

lld表示long long int

t

表示ptrdiff_t类型的值。Ptrdiff_t是两个指针差值的类型

z

表示size_t类型的值。就算sizeof和strlen类型的返回值。

数字

最大字段宽度,输入达到最大字段宽度处,或第一次遇到空白字符时停止

scanf()的使用和printf基本一样,只不过printf是输出,scanf是输入数据输入数据,唯一的不同就在数字,printf是最小字段宽度,而scanf是最大字段类型,这个我们单独演示下,其他的大家看上一章的printf就可以了

ch只有10char类型大小。所以我们用%9s控制输入到数组大小(最后一个位置要给\0);

如果你不加,则会溢出,报错

3.*:抑制赋值

*主要用于省略这个占位符

这里可以看见我输入了三个数字,567,879,123但只输入了123,这就是*的作用,它会是scanf()跳过相应的输入项。这里因为我还用了%2d,所以123,最多输入到2就会停止

四.格式字符串中的普通字符串

Scanf()允许把普通字符放在格式字符串中。,比如添加一个逗号、

scanf("%d,%d", &a, &b),因为%d和%d之间有一个, 所以我们在输入的时候也要遵循这个样式。

如果不遵循就会输入错误

五.scanf()读取错误类型值

我们先来看例子

在这个例子中,系统输入要求我们输入一个整数,但很不巧,我们输入错误了,输入成字符'q’了。这种情况下,a还是存储着一个垃圾值。但仔细看程序你会发现我后面还有一个

scanf("c",&b)给字符b的赋值,但在实际运行中,我们好像没看到,但最后b的值尽然就为q了。

这主要是因为,scanf()读取失败的的时候,会把无法读取的输入留在输入队列中,供下次读取。这也是为啥b的值自动就读取q的原因了


好了朋友们我们今天的内容到这就结束了,今天的内容到这里就结束了,如果有啥不会的朋友记得论坛里面提问哈~

如果朋友你感觉文章的内容对你有帮助,可以点赞关注文章和专栏以及关注我哈,嘿嘿嘿我会定期更新文章的,谢谢朋友你的支持哈

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/351047.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

实验十四、共源放大电路的频率响应

一、题目 利用 Multisim 从下列两个方面研究图1所示电路的频率响应。图1共源放大电路图1\,\,共源放大电路图1共源放大电路(1)为改善低频特性,应增大三个耦合电容中的哪一个最有效。 (2)场效应管的漏极静态电流对上限频…

审批流、工作流、业务流

是业务流、工作流、审批流 业务流:即业务流程,指为了完成某项业务而进行的各种工作的有序组合 工作流:即工作流程,指为了完成某项工作而进行的各种动作的有序组合 审批流:即审批流程,是对某项工作的审批活动…

记录一次服务器被攻击的经历

突然收到阿里云发过来的异常登陆的信息: 于是,急忙打开电脑查看对应的ECS服务器的记录: 发现服务器的cpu占用率异常飙升,所以可以大概断定服务器已经被非法入侵了。 通过自己的账号登陆后,发现sshd服务有异常的链接存…

TensorRT的命令行程序

TensorRT的命令行程序 文章目录TensorRT的命令行程序A.3.1. trtexecA.3.1.1. Benchmarking NetworkA.3.1.2. Serialized Engine GenerationA.3.1.3. trtexecA.3.1.4. 常用的命令行标志点击此处加入NVIDIA开发者计划 A.3.1. trtexec 示例目录中包含一个名为trtexec的命令行包装…

关于表的操作+1 数据库(4)

素材: 学生表:Student (Sno, Sname, Ssex , Sage, Sdept) 学号,姓名,性别,年龄,所在系 Sno为主键 课程表:Course (Cno, Cname) 课程号,课程名 Cno为主键 学生选课表:SC (…

常见的5大软件项目风险,如何进行规避?

1、客户没有或很少参与项目 日常项目开发中,容易出现这样的风险:客户在最开始的时候提交了一份文档,在项目启动、计划和执行阶段,客户没有参与,只是在项目收尾时进行验收,客户一旦发现开发结果与预期需求相…

第42天|LeetCode121. 买卖股票的最佳时机、LeetCode122. 买卖股票的最佳时机 II

1.题目链接:121. 买卖股票的最佳时机 题目描述: 给定一个数组 prices ,它的第 i 个元素 prices[i] 表示一支给定股票第 i 天的价格。 你只能选择 某一天 买入这只股票,并选择在 未来的某一个不同的日子 卖出该股票。设计一个算法…

C++类基础(十六)

类的继承——继承与特殊成员函数 ● 派生类合成的…… – 缺省构造函数会隐式调用基类的缺省构造函数 – 拷贝构造函数将隐式调用基类的拷贝构造函数 – 赋值函数将隐式调用基类的赋值函数 struct Base {Base(){std::cout << "Base()\n";}Base(const Base&…

重生之我是赏金猎人-SRC漏洞挖掘(五)-轻松GET某src soap注入

0x01 挖掘 在对某SRC测试时&#xff0c;本人根据其证书信息收集到了部分深度子域&#xff0c;并找到了其对应的业务IP段 写了个shell脚本ffuf批量fuzz某src c段资产目录 发现了xxSRC c段的一个提供了webservice的服务器 http://180.x.x.x/webservice/ 获取到接口 http://1…

全国计算机等级考试报名照片要求以及证件照制作教程

马上就全国计算机等级考试就要开始了&#xff0c;相信现在很多同学都在网上进行报名呢&#xff0c;报名的时候肯定需要用到个人证件照片&#xff0c;所以问题来了&#xff0c;我们怎么自己制作证件照片呢&#xff1f;计算机等级考试报名时对证件照都有哪些要求呢&#xff1f;该…

06 antdesign react Anchor 不同页面之间实现锚点

react Anchor 不同页面之间实现锚点一、定义二、使用步骤三、开发流程(一)、组件(二)、页面布局(三)、点击事件(四)、总结说明一、react单页面应用&#xff0c;当前页面的锚点二、react单页面应用&#xff0c;不同页面的锚点思路&#xff1a;锚点只能在当前页面使用&#xff0c…

central cache设计及实现

你好&#xff0c;我是安然无虞。 central cache 设计及实现 central cache 也是一个哈希桶结构, 而且它的哈希桶的映射关系跟 thread cache 是一样的, 不同的是 central cache 每个哈希桶位置上挂的是 SpanList 双向链表结构, 而且每个哈希桶下面的 span 中的大块内存被按映射…

大数据之数据中台

目录数据仓库传统数据仓库无法支撑互联网时代的商业智能数据埋点数据仓库 数据仓库是在企业管理和决策中面向主题的、集成的、与时间相关的、不可修改的数据集合。 在电商场景中&#xff0c;有一个数据库专门存放订单的数据&#xff0c;另外一个数据库存放会员相关的数据。构建…

订单服务:订单流程

订单流程 订单流程是指从订单产生到完成整个流转的过程&#xff0c;从而行程了一套标准流程规则。而不同的产品类型或业务类型在系统中的流程会千差万别&#xff0c;比如上面提到的线上实物订单和虚拟订单的流程&#xff0c;线上实物订单与 O2O 订单等&#xff0c;所以需要根据…

[Datawhale][CS224W]图机器学习(三)

目录一、简介与准备二、教程2.1 下载安装2.2 创建图2.2.1 常用图创建&#xff08;自定义图创建&#xff09;1.创建图对象2.添加图节点3.创建连接2.2.2 经典图结构1.全连接无向图2.全连接有向图3.环状图4.梯状图5.线性串珠图6.星状图7.轮辐图8.二项树2.2.3 栅格图1.二维矩形栅格…

如何修改 类名::静态变量?

好久没更新了&#xff0c;其中经历了备战省赛&#xff0c;重装电脑&#xff0c;换服务器&#xff0c;重新搭建博客等一系列事&#xff0c;受到许多技术大牛的指点&#xff0c;而且新人太厉害了&#xff0c;卷卷卷&#xff01; Geek Challenge 2021有一道BabyPOP&#xff0c;这…

vue写一个翻页的时间插件

读秒效果有一个从上向下的翻页效果 效果图 clock代码 <template><div class"dateClock"><div class"todayClass"><p class"datep">{{dateToday}}</p><span style"float:right;font-size:16px">…

基于 VPX 总线的工件台运动控制系统研究与开发-DSP+FPGA硬件架构(一)

作为光刻机核心单元之一&#xff0c;超精密工件台主要负责实现快速扫描、上下片、精密定位、调平调焦等功能。目前&#xff0c;较为成熟的方案大多采用 VME 并行总线架构来建立超精密工件台控制系统&#xff0c;由于随着系统性能要求的提升&#xff0c;VME 总线以及相应的处理器…

最大连续子列和

给定一个数组&#xff0c;求它的最大连续子列和。这个问题有四种解法。 1、暴力循环(O(n^3))分析这个问题&#xff0c;既然是子列&#xff0c;那么它最长为n&#xff0c;最短为1。要想求和我们一般需要知道这个子列的左端下标和右端下标&#xff0c;再求这个子列的和。最简单的…

深入浅出带你学习Nginx中间件常见漏洞

前言 上篇文章总结了APACHE中间件的常见漏洞&#xff0c;本文介绍一个同样很常用的中间件——nginx&#xff0c;本文会讲解关于nginx中间件的常见漏洞利用方式与危害&#xff0c;下面展开来给大家讲解。 Nginx是什么&#xff1f; 在讲漏洞之前我们需要先知道什么是nginx,简单…