1 getchar()简介
getchar()是C语言中的函数,C++中也包含了该函数。getchar()函数的作用是从标准的输入stdin中读取字符。也就是说,getchar()函数以字符为单位对输入的数据进行读取。

2 getchar()读取缓冲区方式
在控制台中通过键盘输入数据时,以回车键作为结束标志。当输入结束后,键盘输入的数据连同回车键一起被输入到输入缓冲区中。在程序中第一次调用getchar()函数从输入缓冲区中读取一个字节的数据。需要注意的是,如果此时在程序中第二次调用getchar()函数,因为此时输入缓冲区中还有回车键的数据没有被读出,第二个getchar()函数读出的是回车符。
例如如下代码

char test1 = getchar();char test2 = getchar();

此时在控制台中输入字符“a”并且按下回车键,test1的值是字符“a”,而test2的值是“\n”,如图1所示。

图1 test1和test2的值

3 解决方法
可以使用rewind()函数来清理输入缓冲区中的数据。该函数的格式为

void rewind( FILE* stream );

其中,参数stream表示指向FILE结构的指针,即为指定的流。该函数的作用是将文件指针移动到文件的起始位置处。rewind()函数清理指定流中的错误指示符以及文件结束指示符。将“2 getchar()读取缓冲区方式”中提到的代码修改为

char test1 = getchar();rewind(stdin);char test2 = getchar();rewind(stdin);

在控制台中,首先输入字符“a”然后按下回车键。getchar()函数从输入缓冲区中读取字符“a”,之后调用rewind()函数清理输入缓冲区中的数据,stdin表示输入缓冲区的指针;之后再在控制台中输入字符“b”,然后按下回车键,getchar()函数从输入缓冲区中读取字符“b”,最后再次调用rewind()函数清理输入缓冲区中的数据。此时,test1和test2的值如图2所示。

图2 test1和test2的值

【C++常用函数】中getchar()的使用方法相关推荐

  1. 计算机公式与函数乘法,excel常用函数乘法公式的使用方法

    Excel中经常需要使用到乘法公式进行计算求积,乘法公式具体该如何进行使用呢?下面是学习啦小编带来的关于excel常用函数乘法公式的使用方法,希望阅读过后对你有所启发! excel常用函数乘法公式使用 ...

  2. python线程池回调函数_python回调函数中使用多线程的方法

    下面的demo是根据需求写的简单测试脚本 #!/usr/bin/env python # coding: utf-8 # 第一个列表为依赖组件和版本号,后面紧跟负责人名称 # 接着出现第二个以来组建列 ...

  3. 达芬奇工具链的建立(工程编译步骤),特别是函数中参数传递的输入方法

    达芬奇工具链的建立(工程编译步骤) 工具链是指的Linux下对程序的编译环境.在这里通过codec_engine_1_02\examples\codecs 下的videnc_copy工程封装CCS下调 ...

  4. 实战! excel常用函数中lookup的用法

    实战 ! VLOOKUP实操: 图一                                                   图二 当我们拿到图一这样的表,而需要获得图二的数据时候,就可以 ...

  5. 计算机应用常用的30个函数,Excel中常用函数的使用

    ISSN 1009-30" 咖船r Kno别b内e and伯叻肋叻电奠知识'i技术 V01.6,No.30,October20lO,pP.8523-8524E-mail:x8jl@cccc. ...

  6. 关于go指针在方法or函数中这件事

    title 1. go中的指针 2. 函数中的指针 3. 方法中的指针 1. go中的指针 使用 *类型 声明指针- 使用*变量名获取指针的值- 使用 &p 获取指针的内存地址- fmt.Pr ...

  7. c 语言 函数返回数组_如何在C ++函数中返回数组

    c 语言 函数返回数组 介绍 (Introduction) In this tutorial, we are going to understand how we can return an arra ...

  8. Python之pandas:pandas中数据处理常用函数(与空值相关/去重和替代)简介、具体案例、使用方法之详细攻略

    Python之pandas:pandas中数据处理常用函数(与空值相关/去重和替代)简介.具体案例.使用方法之详细攻略 目录 pandas中数据处理常用函数(isnull/dropna/fillna/ ...

  9. Python中random模块常用函数/方法(2)——random.random(),random.randint()和random.uniform()

    1.random.random():生成一个0到1的随机符点数: 0 <= n < 1.0 语法:random.random() #生成一个0~1之间的随机浮点数 print(" ...

最新文章

  1. python3.6安装版本选择
  2. Linux调度系统全景指南(中篇)
  3. C++实现图的深度优先遍历和广度优先遍历
  4. opencv书籍调研
  5. 哈工大威海计算机组成原理,哈工大威海计算机组成原理复习.pdf
  6. Linux(CentOS6.5)下编译安装Nginx1.10.1
  7. python的深造方向_自动化深造方向有哪些?
  8. 指纹图谱相似度评价软件_不同产地佛手指纹图谱及模式识别研究
  9. 挤拥城市游戏android,拥挤城市crowdcity
  10. 学Python时需注意:单引号、双引号、三个单引号和三个双引号区别
  11. 再见 Docker !5分钟转型 containerd !
  12. go interface类型转换_Go语言的九大核心特性主要有哪些?
  13. Linux高性能server规划——多线程编程(在)
  14. java异常处理:finally中不要return
  15. 云计算机领域的黑马AWS,为何一黑到底
  16. maven pom.xml解析、命令说明、依赖传递、继承、聚合、properties、build、依赖范围、版本仲裁、profile
  17. 汉语拼音的5个声调该怎么学?
  18. Flutter Web 支持现已进入稳定版
  19. 一篇文章让你掌握HTML+CSS
  20. 取消超时订单及延迟处理方案

热门文章

  1. Flutter 中不得不会的 mixin
  2. 帮你自动填账号密码的黑科技,安卓用户的专属福利
  3. 友推在Android 实现微信等分享代码的常见问题
  4. 如何理解是 TCP 面向字节流协议?
  5. items属性的combo_Combobox.Items中添加项Items
  6. 百度定位sdk的api使用时获取地址信息为null的原因
  7. 关于多线程生成Excel文件并压缩成ZIP(输入输出流形式非file创建)
  8. Win10 steam版战地3战役无限初始化解决方案汇总
  9. Apache部署静态网站
  10. 树莓派3 kali linux很卡,树莓派3B安装kali并优化