关于gets()与scanf()输入字符串与\0,\n,空格之间的问题

news2024/11/14 6:14:51

我们都知道输入字符串的话,用gets()函数与scanf()加%s的话都是可以的。同时,一个字符串的结尾默认有一个\0也是老生常谈。

空格

gets()

1. 当gets()碰到空格时就把它当成一个普通的字符来看,没有任何特殊之处可言。

scanf()

1. 如果再输入过程中间有空格的话,那么它只读取空格前面的字符,碰到空格的话就到此为止了,接下来不再下去了。

2. 就算是最后输入空格,也是一样,反正就是碰到空格的话就停下来不再继续读取,同时这个空格这个字符是不包括在内的。

接下来对于\n与\0,需要知道的是:你手动输入的\0与\n与真正的字符串末尾的\0、按下一个回车键导致往输入缓冲区里面放进去的\n这两者的话是有区别的。对于你手动输入的那些,编译器会把它看成两个字符

\n

1. 我们都知道,当敲一下回车的时候,就相当于输入缓冲区里面放入一个\n.

2. 但是当我们自己在输入中的时候,自己手动输入的一个\n,编译器不会把这个\n当成回车的那个,还是会把它解读成两个字符,这个对于gets与scanf两者相同。

两个注意点:

1. 对于最后输入回车然后放到输入缓冲区里面的那个\n,两者的处理方式就有不同。scanf()是读取那个之前的字符,然后那个\n就仍然留在输入缓冲区里面,这也因此导致可能需要清理输入缓冲区。而gets()会把最后敲进去的那个\n自动给扔出来。

2. 对于scanf输入完之后,如果没有清空缓存区的话,这时候输入缓冲区一个字符就是\n,无论接下来有gets函数还是scanf读取新的内容,首先不可避免的会先读到\n,一旦读到这个“货真价实”的\n,那么就直接回车\换行了。

 

\0 

1. 通过监视也不难发现,当在输入过程中,自己手动输入一个\0,编译器会把它解读成两个字符。

一个注意点:

1. 我们都知道,字符串的末尾默认带有一个\0,但是当从输入缓冲区里面读取字符串的时候,人为的并没有输入\0,但是从上面那么多的监视当中不难发现,编译器会在最屁股后面自动会补上一个\0。

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

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

相关文章

【自学Python】Python特点

Python特点 Python特点教程 Python 是一个高层次的结合了解释性、编译性、互动性和面向对象的脚本语言。 Python 的设计具有很强的可读性,相比其他语言经常使用英文关键字,其他语言的一些标点符号,它具有比其他语言更有特色语法结构。 Py…

计算机组成原理实验——一、ALU实验

一、实验目的 1.掌握ALU模块的组成和接口,理解ALU的功 能。 2.通过编程调用ALU模块计算斐波那契数。 3.掌握Verilog中多模块编程方法和实现。 二、实验内容 用 Verilog 设计一个算术运算单元 ALU,采 用纯组合逻辑设计,32bit 宽。 利用该 …

2022(终)最后一篇博客—继承和多态

目录 文章目录 一、继承 1.1为什么要继承 1.2继承概念 1.3继承的语法 1.4成员访问 1.5方法访问 1.6初始化代码块 1.7继承方式 二、多态 1.1多态的概念 1.2多态实现条件 1.3动态绑定与静态绑定 1.4向上转型与向下转型 1.5多态的优缺点 1.6需要注意的地方&#x…

【王道操作系统】1.1.2 操作系统的特征(并发、共享、虚拟、异步)

操作系统的特征(并发、共享、虚拟、异步) 文章目录操作系统的特征(并发、共享、虚拟、异步)1.操作系统特征:并发2.操作系统特征:共享3.操作系统特征:虚拟4.操作系统特征:异步操作系统是一种系统软件,但与其它系统软件和…

NXP的mfgtool镜像烧写工具是如何对EMMC进行分区的

本来是想在IMX6ULL板卡上实现u-boot中显示开机logo的功能的,过程中就牵扯出了这几个问题。大概的缘由是修改了u-boot后,想在系统中直接对EMMC中u-boot进行更新,就不用通过SD卡或USB重新烧写了;在更新的时候,又需要知道…

猿如意程序代码生成实践与测试

ChatGPT中国区申请无法直接注册与使用; 使用csdn提供的猿如意效率工具箱提供的chatGPU功能实现智能程序编写实验: 先安装: csdn猿如意下载地址 选择其中的ChatGPT菜单 在右侧窗口中的输入框,可输入问题内容。 (1&a…

〖产品思维训练白宝书 - 产品思维认知篇⑥〗- 职场人面临困惑与迷茫应该如何破局?

大家好,我是 哈士奇 ,一位工作了十年的"技术混子", 致力于为开发者赋能的UP主, 目前正在运营着 TFS_CLUB社区。 💬 人生格言:优于别人,并不高贵,真正的高贵应该是优于过去的自己。💬 &#x1f4e…

Leetcode:459. 重复的子字符串(C++)

目录 问题描述: 实现代码与解析: 移动匹配法: 原理思路: 利用kmp法: 原理思路: 暴力法: 原理思路: 问题描述: 给定一个非空的字符串 s ,检查是否可以…

55 处理错误的树形数据结构导致不断地添加元素到集合中 OOM

前言 呵呵 这是最近一个 前同事/朋友 碰到的一个问题 主要的问题是 在 dump 文件中发现了很多 LinkedList$Node 的节点 然后 整个问题 抛出来的错误是 OOM 呵呵 这种问题 还是相当好处理的 这里 仅仅是 简单记录一下 前因 后果 测试用例 /*** Test11OomByTree** aut…

关于2022年

也算是传统了,每年到年底的时候,总喜欢做点总结,或许类似于企业里面的年底复盘,但更多的还是碎碎念。往年一般会放在农历新年那一天,今年做点小改变,影响不大。 回顾过去的一年,发现自己基本上…

【HR-VITON】虚拟换衣算法pre-processing复现全过程记录

Link of original Github repo Link of personal made study case of HR-VITON ContentPre1、OpenPose(On colab, need GPU)2、Human ParseMethod 1: ColabMethod 2: Local or Server3、DensePose (On colab, GPU or CPU)4、Cloth Mask (On colab, GPU o…

【MySQL】InnoDB数据页结构

文章目录1. 前言2. 数据页结构3. 记录在页中的存储4. 记录头信息5. 页目录(Page Directory)6. 页面头部(Page Header)7.文件头部(Fiile Header)8. 文件尾部(File Trailer)不知不觉20…

JVM调优相关说明

前言 其实听着JVM调优这个词有些高大上,但是等你真正了解了他的内在原理后,还是很容易的。再简单 JVM调优大致可分为如下: 解决JVM运行过程中的问题(主要就是内存溢出的问题)优化JVM运行时的环境,提高运…

多线程问题(四)

目录 一、常见的锁策略 1、乐观锁 VS 悲观锁 2、读写锁 VS 普通的互斥锁 3、重量级锁 VS 轻量级锁 4、挂起等待锁 VS 自旋锁 6、公平锁 VS 非公平锁 7、可重入锁 VS 不可重入锁 8、synchronized锁的性质 二、CAS 1、CAS的伪代码 2、CAS的应用 a、实现原子类…

【Spring系列】一篇文章开启你的 SpringBoot 之旅

SpringBoot 快速入门一. 环境搭建1.1 环境准备Java环境准备(本人是 JDK 1.8)开发工具 IntelliJ IDEAMaven (可使用 IntelliJ IDEA 自带)二. 快速开始2.1 新建项目打开IDEA 新建 SpringBoot 项目2.2 运行项目Spring Boot 项目运行分析尝试在浏览器中访问2.3 完成第一个接口新建c…

ArcGIS基础实验操作100例--实验30清除坐标系信息

本实验专栏参考自汤国安教授《地理信息系统基础实验操作100例》一书 实验平台:ArcGIS 10.6 实验数据:请访问实验1(传送门) 高级编辑篇--实验30 清除坐标系信息 目录 一、实验背景 二、实验数据 三、实验步骤 方法一&#xff…

运维管理平台OEM定制集成开发,激发IT价值

对硬件设备商而言,借助优秀的网管、运维管理平台,可以形成完整的产品解决方案,直接提升产品的形象和适用范围。同时还可以通过网管、运维管理平台,切入到外围的产品及集成领域,并在用户后续的升级改造活动中占据有利位…

12.31日报

纠正前天的错误: 前天我写: 不知道在mapper中的增删改方法返回值int的值,和含义,在调用方法时也没有定义int来接参,都是直接调用。于是我定义int i,并打印输出,使用postman调用接口方法&#xf…

R语言hdnom包进行高维惩罚 Cox 回归模型绘制列线图-校准曲线-时间依赖ROC-外部验证

Hdnom包可以用于用于给高维数据构建Cox 模型、绘制列线图-校准曲线-时间依赖ROC-外部验证,而且Hdnom包简化了建模过程,带有自动选择变量功能,将用户从繁琐且容易出错的调参过程中解放出来. hdnom提供了多项自动调参和模型选择功能&#xff…

【OpenAI】基于 Gym-CarRacing 的自动驾驶项目 | 前置知识介绍 | 项目环境准备

猛戳!跟哥们一起玩蛇啊 👉 《一起玩蛇》🐍 💭 写在前面: 本篇是关于多伦多大学自动驾驶专业项目 Gym-CarRacing 的博客。GYM-Box2D CarRacing 是一种在 OpenAI Gym 平台上开发和比较强化学习算法的模拟环境。它是流行…