getchar()的使用方法——给scanf当爹又当妈
一、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当爹又当妈相关推荐
- C语言学习笔记09-数组、字符数组、字符串数组、二维数组(单字符输入输出putchar、getchar,字符串输入输出的scanf、gets、puts)
C语言数组 数组作用:可以用来保存很多记录(可以看成一种大容器).一些简单游戏也基本由数组实现,如游戏地图(二维数组)等等. 一个数组 划分 多个单元(下标区分) -存放-> 多个同类元 ...
- 川希:日引流100+宝妈粉蓝海方法,精准引流预产期宝妈思路
川希:日引流100+宝妈粉蓝海方法,精准引流预产期宝妈思路 所有做育儿产品.母婴产品.早教产品.K12教育等宝妈周边产品的人群,一定对宝妈粉有极大需求,特别是精准宝妈群体. 本文将公开一套精准引流预产 ...
- getchar的使用方法
先来看一眼来自getchar - C++ Reference 的getchar的详细 一.函数声明 int getchar(void) 二.函数返回值 从上面的解析中不难看出,该函数以无符号 char ...
- python getchar功能_C++ getchar()的使用方法
1 getchar()简介 getchar()是C语言中的函数,C++中也包含了该函数.getchar()函数的作用是从标准的输入stdin中读取字符. 也就是说,getchar()函数以字符为单位对 ...
- 【C++常用函数】中getchar()的使用方法
1 getchar()简介 getchar()是C语言中的函数,C++中也包含了该函数.getchar()函数的作用是从标准的输入stdin中读取字符.也就是说,getchar()函数以字符为单位对输 ...
- 又当爹又当妈的产品经理
一个成功的产品就像一 个人的成长过程一样,会经历孕育.婴儿.少年.青年.成年.老年等几个不同的阶段,而产品经理就像无数操心的父母一样,在不同阶段要有不同的心态和处理方 式,以帮助产品茁壮成长. 文 / ...
- IT30:IT男出差备忘录(又当爹又当妈)
IT部出差备忘录 目录 一.前言 二.工作 三.生活 四.自身安全 五.注意事项 一.前言 如下为IT部同事现事出差前必看资料,并请用户记下,主要从:工作.生活.报销几个方面进行安排. 二.工作 在接 ...
- 浅谈getch(),getche(),getchar(),gets(),scanf()的区别
getch(),getche(),getchar(),gets(),scanf()的区别,综合很多博客的文章. getch()和getchar() getchar()是C的标准库函数,包含在头文件&l ...
- c语言数据输入方式scanf,【C语言】-数据输入-scanf( )和getchar( )
格式化输入函数scanf( ) scanf( )功能: 按照指定的格式读入键盘上输入的若干个任意类型的数据,存入到argument参数所指向的内存单元,函数返回值为读入并赋给argument的数据个数 ...
最新文章
- 使用Python和OpenCV进行拍摄截图
- AGC002[BCDEF]题解
- mysql 布尔型盲注,SQL注入之布尔型注入(MySQL)
- IBM T60网卡问题
- 从“删库跑路”这件事聊聊数据安全那些事
- Python自动化开发学习的第九周----线程、进程、协程
- 读书笔记 UltraGrid(2)
- 关于在数据库中存储层次数据的一点看法与理解
- jquery 发送验证码60s倒计时,后重新发送
- laravel mysql增删改查_laravel基础laravle中orm简单的增删改查-一颗优雅草男神你姚哥...
- 基于PHP的教学管理系统_WEB管理系统_MySQL应用
- 四、快速搭建一套现代化的个人独立博客系统,给爱写博客的你(part2 正文)
- b站视频素材哪里找?怎么找b站素材?
- 计算机表格行列知识,计算机基础知识——应用表格.ppt
- 2020 android 新功能,少了它,你就OUT了!2020年安卓旗舰手机 新技术盘点与展望
- Stream系列(十二) PartitioningBy方法使用
- 路由协议(实例讲解)
- 4.24、半关闭、端口复用
- 舔砖加瓦(java)之java常用类
- MySQL 高可用之MMM
热门文章
- Tasks Assessing Protein Embeddings (TAPE)
- RFC1662_PPP in HDLC-like Framing_HDLC协议
- 高速公路超速处罚 (15分)
- PhpStorm Git 操作
- 手把手 教你把H5页面打造成windows 客户端exe 软件
- C++deque介绍
- 【uniapp】 限时秒杀scroll-view商城秒杀倒计时
- 全网首发!! 黑苹果MacOs12 Monterey升级后蓝牙失效问题
- hive时空链战_时空链战
- 色彩的数学规则(二)(转)