就目前而言,我所遇到的getchar()有两处

(1)在程序末尾加getchar(),用来让程序不会立即退出,跟system(“pause”);是一样的功能.可能你在写完代码后用ctrl + F5运行时,不加getchar();程序也不会立即退出,这是当然的,编译器有这个功能.不过如果你从debug文件夹下用.exe文件打开代码,没有getchar()或system(“pause”);程序会闪一下就消失,可能就零点几秒.getchar();让程序停留在这一步,直到它从键盘接收到消息.

(2)在两次连续从键盘输入语句中间.这个就有点意思了,下面我用一段代码演示

这段代码里getchar()被我注释掉了,看一下运行结果

看出什么了吗?下面那句gets(str2)直接执行了,我还没有输入字符,它就执行结束了.

看一下加了getchar()的程序

看到差异了吗?这里gets(str2)直接没有执行,下面我键入命令

这才是我想要的运行结果.

那么为什么会出现这种情况呢,我自己也上网查了些许资料,以下为本人总结:

当从键盘输入时,键盘输入的字符会保存在缓冲区,当键盘按下enter建时,缓冲区被清空,缓冲区的内容被写入目标内,比如我这段代码的目标就是str,即我从键盘输入的list被写入str数组里,这个时候缓冲区还有什么呢?准确的说,这时缓冲区里还有一个字符’enter’,

如果不加getchar(),缓冲区会把’enter’这个字符写进gets(str2),这时程序就会像上面那样,直接结束.而加了getchar();它会吃了缓冲区里的’enter’字符,这时候缓冲区才是真的什么都没有,gets(str2)等待缓冲区写入内容,这时程序才会像下面那样执行
————————————————
版权声明:本文为CSDN博主「痕忆丶」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_37059136/article/details/80280991

getchar()作用相关推荐

  1. c语言get()的作用,c语言get函数的用法有哪些

    C语言中gets从标准输入设备读字符串函数,可以无限读取,不会判断上限,今天学习啦小编在这里为大家介绍C语言get函数的用法,欢迎大家阅读! c语言get函数的用法:int getc(FILE *st ...

  2. 实现DFS之“骨头的诱惑”

    度优先搜索(DFS)是一个递归过程,有回退过程. 下面是一道OJ上的题目,借此来实现下DFS~ 题目来源: Zhejiang Provincial Programming Contest 2004,Z ...

  3. C实现的一个简单的学生成绩管理系统

    /*学生成绩管理系统 */ //#include "StdAfx.h" #include "stdio.h"   /*标准输入输出函数库*/ #include ...

  4. scanf()中的%c 不能正常输入的问题

    #include <stdio.h> int main() {char a;int b;scanf("%d",&b);scanf("%c", ...

  5. (数据结构)树的双亲表示法

    树的双亲表示法 此前写过二叉树的顺序存储和链式存储,此篇文章将介绍普通树是如何存储的... 通常,存储具有普通树结构数据的方法有 3 种: 双亲表示法 孩子表示法 孩子兄弟表示法 而本篇文章将优先介绍 ...

  6. C语言get函数汇总

    转载自新浪博客:http://blog.sina.com.cn/s/blog_590be5290100kaeg.html 1.int getc(FILE *stream); 从指定输入流 stream ...

  7. (数据结构)树的Child表示法

    树的孩子表示法 此前介绍过用双亲表示法存储普通树,本篇文章将讲解另一种存储普通树的方法... 另一种方法是孩子表示法!!! 孩子表示法存储普通树采用的是:顺序表和链表的组合结构 其存储过程是:从树的根 ...

  8. C语言期末集训3(大一,超基础,小猫猫大课堂配套练习)——循环结构

    更新不易,麻烦多多点赞,欢迎你的提问,感谢你的转发, 最后的最后,关注我,关注我,关注我,你会看到更多有趣的博客哦!!! 喵喵喵,你对我真的很重要. 大一上程序设计期末复习,超基础,小猫猫大课堂配套练 ...

  9. getchar()函数的作用

    1.清除回车符 2.查看程序中间结果 3.一次向缓存读入一个字符 4.getchar()是缓存输入函数,从键盘输入多个字符时: 将所有字符保存在键盘缓存区,直到遇到回车 符,getchar()函数才从 ...

最新文章

  1. mysql using filesort_mysql using filesort Using temporary
  2. 如果服务器开机显示NObootable,电脑不能开机提示No bootable device怎么办?
  3. oracle dbwr trace文件,ORA-01157: cannot identify/lock data file 19 - see DBWR trace file问题处理...
  4. mysql的cpu飙升到500_[MySQLCPU]线上飙升800%,load达到12的解决过程
  5. 【总结】大规模数据(300万条)测试时,需要注意的问题。
  6. hive sql 报错后继续执行_Hive迁移Presto在OPPO的实践
  7. Tensorflow API解析 -目录
  8. 简洁明了:基于eova平台,对Vue 页面中的自定义Button按钮进行用户权限控制处理
  9. Snagit 10 截图 虚拟打印机 【下载|注册码】
  10. 基于SSM实现的新闻发布系统【附源码】(毕设)
  11. 生物信息常用网站(数据库)
  12. 微博除夕日活达1.34亿 借阿里云化解流量洪峰
  13. 玩转微信个性化头像,一键加V/加字/加图片
  14. 我的第一篇随笔-------吹起启程之风
  15. 推荐一个美中不失优雅的博客网主页(素材参考---麋鹿鲁哟)
  16. linux 命令 tr 详解
  17. [计算几何] [BZOJ4246] 两个人的星座
  18. 让未来更近,三星The New Bixby与IoT打造智能物联
  19. 使用百度UNIT搭建智能对话系统_订火车票实例
  20. 植树节汇报之后的突发奇想

热门文章

  1. 路由器/交换机flow 调试指令
  2. origin画对数坐标_如何用Origin绘制对数坐标图、双横坐标图及插入到Word文稿
  3. 软件体系结构层次风格
  4. 触摸屏手机的工作原理是怎样的?
  5. 路由控制——ACL、IP-Prefix List
  6. uniapp 解决ios上拉下拉白边处理
  7. 什么是推挽输出,开漏输出?
  8. html内边距居中,HTML中详述外边距样式属性(margin)与内边距样式属性(padding)...
  9. ARP攻击-流量分析
  10. VMwareWorkstation虚拟机安装Linux系统