一、getchar()的基本用法
getchar()函数的功能是从缓冲区中读取一个字符,注意,是一个字符。当缓冲区中没有字符可以读取时,getchar()就会等待我们输入一个字符,然后把它读走,相反,如果缓冲区中存在字符,getchar()就不等我们输入,直接读取缓冲区中的字符。与此对应的是putchar(),它能够向终端输出一个字符。
例1
如下图,当我们输入一个字符a时,getchar()从缓冲区中把它读取,之后,putchar()把getchar()读取的字符a输出。

与scanf不同,getchar()能够读取空格、回车等,而scanf遇到空格与回车时,会结束读取,所以此时,一般scanf读走输入数据后,会留下如\n等的字符,而如果我们还要再次调用scanf的话,缓冲区中还有\n,此时scanf不等我们输入数据,就直接把\n读走了,从而不能达到我们的目的。
例2
下面第一张图,当输入一个w后,我们按下回车,此时第一个scanf把w读走,缓冲区中还剩下\n,第二个scanf不等我们输入就直接读走了\n。注:这种情况是输入类型为字符时才会直接读取\n,如果换成像字符串这样的内容时,scanf还是会等待我们输入。
第二张图,我们可以看到w下面换了一行,这时就是getchar()读取了回车,putchar()把换行输出了。此时,就需要getchar()来帮它了

二、getchar()——清除\n等字符
当我们输入字符后,按下回车键,缓冲区中还存在\n字符,如果想再次使用scanf,就得将其清除,我们就要用到getchar()
例3
如下图,当我们用getchar()清理掉第一个scanf读取字符后留下的\n时,第二个scanf就能正常使用了。

那我们上面提到了,scanf在遇到空格时也会停止读取,如果我们输入了一个字符串:abcd ef时,scanf只会把abcd读走,缓冲区中还留下了 ef以及回车\n,此时一个getchar()只能读取一个字符,并不能把它们都读完,此时,我们就可以用循环来处理了。如下图所示

当getchar()读取到\n时,跳出循环,putchar()也把 ef输出了,ef后的a是第二个scanf读取的。
这里我们看到要想使用scanf时会遇上一些问题需要getchar()帮它解决,这样才能更好地使用scanf。所以getchar()才给scanf“当爹又当妈”。

三、getchar()的结束标志——EOF(end of file)

如果我们想停止使用getchar(),可以用ctrl+z停止,上图我们可以看到当我们打出ctrl+z时,putchar()并没有进行打印。并且要在未输入字符时使用,若已经输入了字符,则还是会执行。而end of file是文件结束的标志,本质上是-1,getchar()接受的是字符类型,字符又对应着ASCII码值,ASCII码值都为正数,所以EOF会使getchar()停止使用,而且我们也由此知道,getchar()返回值为整型。

getchar()的使用方法——给scanf当爹又当妈相关推荐

  1. C语言学习笔记09-数组、字符数组、字符串数组、二维数组(单字符输入输出putchar、getchar,字符串输入输出的scanf、gets、puts)

    C语言数组   数组作用:可以用来保存很多记录(可以看成一种大容器).一些简单游戏也基本由数组实现,如游戏地图(二维数组)等等.   一个数组 划分 多个单元(下标区分) -存放-> 多个同类元 ...

  2. 川希:日引流100+宝妈粉蓝海方法,精准引流预产期宝妈思路

    川希:日引流100+宝妈粉蓝海方法,精准引流预产期宝妈思路 所有做育儿产品.母婴产品.早教产品.K12教育等宝妈周边产品的人群,一定对宝妈粉有极大需求,特别是精准宝妈群体. 本文将公开一套精准引流预产 ...

  3. getchar的使用方法

    先来看一眼来自getchar - C++ Reference 的getchar的详细 一.函数声明 int getchar(void) 二.函数返回值 从上面的解析中不难看出,该函数以无符号 char ...

  4. python getchar功能_C++ getchar()的使用方法

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

  5. 【C++常用函数】中getchar()的使用方法

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

  6. 又当爹又当妈的产品经理

    一个成功的产品就像一 个人的成长过程一样,会经历孕育.婴儿.少年.青年.成年.老年等几个不同的阶段,而产品经理就像无数操心的父母一样,在不同阶段要有不同的心态和处理方 式,以帮助产品茁壮成长. 文 / ...

  7. IT30:IT男出差备忘录(又当爹又当妈)

    IT部出差备忘录 目录 一.前言 二.工作 三.生活 四.自身安全 五.注意事项 一.前言 如下为IT部同事现事出差前必看资料,并请用户记下,主要从:工作.生活.报销几个方面进行安排. 二.工作 在接 ...

  8. 浅谈getch(),getche(),getchar(),gets(),scanf()的区别

    getch(),getche(),getchar(),gets(),scanf()的区别,综合很多博客的文章. getch()和getchar() getchar()是C的标准库函数,包含在头文件&l ...

  9. c语言数据输入方式scanf,【C语言】-数据输入-scanf( )和getchar( )

    格式化输入函数scanf( ) scanf( )功能: 按照指定的格式读入键盘上输入的若干个任意类型的数据,存入到argument参数所指向的内存单元,函数返回值为读入并赋给argument的数据个数 ...

最新文章

  1. 使用Python和OpenCV进行拍摄截图
  2. AGC002[BCDEF]题解
  3. mysql 布尔型盲注,SQL注入之布尔型注入(MySQL)
  4. IBM T60网卡问题
  5. 从“删库跑路”这件事聊聊数据安全那些事
  6. Python自动化开发学习的第九周----线程、进程、协程
  7. 读书笔记 UltraGrid(2)
  8. 关于在数据库中存储层次数据的一点看法与理解
  9. jquery 发送验证码60s倒计时,后重新发送
  10. laravel mysql增删改查_laravel基础laravle中orm简单的增删改查-一颗优雅草男神你姚哥...
  11. 基于PHP的教学管理系统_WEB管理系统_MySQL应用
  12. 四、快速搭建一套现代化的个人独立博客系统,给爱写博客的你(part2 正文)
  13. b站视频素材哪里找?怎么找b站素材?
  14. 计算机表格行列知识,计算机基础知识——应用表格.ppt
  15. 2020 android 新功能,少了它,你就OUT了!2020年安卓旗舰手机 新技术盘点与展望
  16. Stream系列(十二) PartitioningBy方法使用
  17. 路由协议(实例讲解)
  18. 4.24、半关闭、端口复用
  19. 舔砖加瓦(java)之java常用类
  20. MySQL 高可用之MMM

热门文章

  1. Tasks Assessing Protein Embeddings (TAPE)
  2. RFC1662_PPP in HDLC-like Framing_HDLC协议
  3. 高速公路超速处罚 (15分)
  4. PhpStorm Git 操作
  5. 手把手 教你把H5页面打造成windows 客户端exe 软件
  6. C++deque介绍
  7. 【uniapp】 限时秒杀scroll-view商城秒杀倒计时
  8. 全网首发!! 黑苹果MacOs12 Monterey升级后蓝牙失效问题
  9. hive时空链战_时空链战
  10. 色彩的数学规则(二)(转)