键盘输入与屏幕输出——getchar()之深入分析

使用getchar()输入字符时的怪象

回车符  '\n'  结束字符的输入

输入的字符(包括回车符)都放在输入缓冲区

怪象背后的原因

行缓冲(Line-buffer)输入方式

*将输入字符先放入输入缓冲队列中,再从缓冲队列读取字符

*直到键入回车符或文件结束符EOF时,程序才认为输入结束

*一行输入结束,getchar()才开始从输入缓冲队列读取字符,前面函数没读走的数据仍在缓冲队列中,将被下一个函数读取

回车符 '\n' 的ASCII码是10

相当于一次性把键盘输入的一行字符都放入输入缓冲区

然后再从输入缓冲区逐个读取字符

更深层的原因

为什么getchar()要读到一个回车符或文件结束符EOF才进行一次处理操作呢?

为什么getcher()以行(而非字符)为单位读取字符呢?

*实际是按文件的方式读取字符

*文件一般是以行为单位的

另一个需要注意的问题

有时getchar()也可能返回负值

*若在Unix/Linux下遇到组合键Ctrl+D(Windows下为Ctrl+Z),则返回EOF(一般定义为-1)

解决方法:

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

25.死锁

一个线程如果需要同时获取多把锁,就容易产生死锁。 t1线程获得A对象锁,接下来想获取B对象的锁。 t2线程获得B对象锁,接下来想获取A对象的锁。 /*** 死锁demo* param args*/public static void main(String[] args) {Object a new Object(…

递归遍历目录结构和树状展现

在D盘下创建文件夹“电影”,在文件夹“电影”下创建“华语”、“好莱坞”,在文件夹“华语”下创建文件“人民的名义.mp4”、“天安门传奇.mp4”、“程序员统治世界.mp4”,在文件夹“好莱坞”下创建文件“国王的演讲.mp4”、“速度与激情8.mp4…

QUndoCommand的使用

目录 引言基本实现主要组成命令(QUndoCommand)命令栈(QUndoStack) 优化技巧组合命令合并命令 完整代码 引言 实现撤销重做(Undo/Redo)是编辑器的必备功能,诸如文本编辑器、电子表格、图像编辑器…

Nginx 日志输出配置json格式

nginx日志输出配置json格式 nginx服务器日志相关指令主要有两条: (1) 一条是log_format,用来设置日志格式 (2) 另外一条是access_log,用来指定日志文件的存放路径、格式和缓存大小。 log_format指令用来设置日志的记录格式,它的语…

go入门到精通

初识Go语言 Go语言介绍 Go语言是什么 2009年11月10日,Go语言正式成为开源编程语言家庭的一员。 Go语言(或称Golang)是云计算时代的C语言。Go语言的诞生是为了让程序员有更高的生产效率,Go语言专门针对多处理器系统应用程序的编…

【Leetcode】2952. 需要添加的硬币的最小数量

文章目录 题目思路代码复杂度分析时间复杂度空间复杂度 结果总结 题目 题目链接🔗 给你一个下标从 0 0 0 开始的整数数组 c o i n s coins coins,表示可用的硬币的面值,以及一个整数 t a r g e t target target 。 如果存在某个 c o i …

SpringCloud学习(1)-consul

consul下载安装及使用 1.consul简介 Consul是一种开源的、分布式的服务发现和配置管理工具,能够帮助开发人员构建和管理现代化的分布式系统。它提供了一套完整的功能,包括服务注册与发现、健康检查、KV存储、多数据中心支持等,可以帮助开发人…

【C语言】InfiniBand内核驱动_mlx4_ib_post_send

一、注释 以下是_mlx4_ib_post_send函数的注释,该函数用于处理InfiniBand工作请求(WRs)的发送过程: static int _mlx4_ib_post_send(struct ib_qp *ibqp, const struct ib_send_wr *wr,const struct ib_send_wr **bad_wr, bool …

备考ICA----Istio实验15---开启 mTLS 自动双向认证实验

备考ICA----Istio实验15—开启mTLS自动双向认证实验 在某些生成环境下,我们希望微服务和微服务之间使用加密通讯方式来确保不被中间人代理. 默认情况下Istio 使用 PERMISSIVE模式配置目标工作负载,PERMISSIVE模式时,服务可以使用明文通讯.为了只允许双向 TLS 流量,…

XGB回归预测

关键代码 import numpy as np import matplotlib.pyplot as plt from xgboost import XGBRegressor #pip install xgboost -i https://pypi.tuna.tsinghua.edu.cn/simple import pandas as pd import joblib#处理中文字体 plt.rcParams[font.family] [sans-serif] plt.rcPar…

XMind 2024 下载地址及安装教程

XMind是一款流行的思维导图软件,它帮助用户以图形化的方式组织和呈现思维、概念和信息。XMind可以应用于各个领域,如项目管理、思维导图、会议记录、学习笔记等。 XMind提供了直观和易于使用的界面,用户可以通过拖放和连线来创建思维导图。它…

String、StringBuffer、StringBuilder类

最近在复习 Java 基础的时候,看到了 String 这块的内容,我突发奇想,可以将 String、StringBuffer、StringBuilder 这些知识点整合在一起记忆。我之前背的那个答案其实有点琐碎,而且不太好理解,还繁杂,所以我…

PS从入门到精通视频各类教程整理全集,包含素材、作业等(5)

PS从入门到精通视频各类教程整理全集,包含素材、作业等 最新PS以及插件合集,可在我以往文章中找到 由于阿里云盘有分享次受限制和文件大小限制,今天先分享到这里,后续持续更新 初寒调色案例及练习图 等文件 https://www.alipan.…

Android Studio 识别不到物理机设备

问题 Android Studio 识别不到物理机设备 详细问题 笔者进行Android 项目开发,之前一直可以连接上物理机设备,可能由于笔者对于驱动程序进行更新修改的原因,突然无法连接物理机设备。搜索无数资料,使用无数解决方案&#xff08…

src挖掘技巧总结分享

src挖洞技术分享 src推荐刚入门的新手首选公益src如漏洞盒子、补天src,因为漏洞盒子收录范围广,只要是国内的站点都收入,相比其它src平台挖掘难度非常适合新手。后续可以尝试先从一些小的src厂商入手。 首先是熟能生巧,我一开始挖…

spring(3)

spring6 1、bean生命周期1.1 bean生命周期之五步1.2bean生命周期之七步1.3 bean生命周期之十步1.4 bean作用域与管理周期 2、把自己new的对象交给spring管理3、Bean循环依赖3.1 setsingleton3.2 构造singleton3.3 propotypeset注入3.4 bean循环依赖源码分析:3.5 常见…

图论模板详解

目录 Floyd算法 例题:蓝桥公园 Dijkstra算法 例题:蓝桥王国 SPFA算法 例题:随机数据下的最短路问题 总结 最小生成树MST Prim算法 Kruskal算法 例题:聪明的猴子 Floyd算法 最简单的最短路径算法,使用邻接…

BGP联盟、对等体组、按组打包

BGP联盟 将大的AS划分为几个子AS(成员AS),每个子AS内部建立全连接的IBGP邻居,子AS之间建立EBGP邻接关系。 联盟AS:大AS,就是常说的AS号,一般使用公有AS号。 成员AS:小AS&#xff…

MongoDB 启动异常

Failed to start up WiredTiger under any compatibility version. 解决方案: 删除WiredTiger.lock 和 mongod.lock两个文件,在重新启动。回重新生成新的文件。

Unicode在线编码和解码工具推荐(实用)

Unicode在线编码 - Unicode编码工具 - Unicode在线生成 - Unicode在线解码 - WGCLOUD