C语言getchar()函数理解及其用法
目录
getchar()的描述以及用法
案例
图文解释:
总结
getchar()的描述以及用法
getchar()是stdio.h中的库函数,它的作用是从缓冲区中读取一个字符,如果缓冲区中没有字符可供读取,它就会等待终端键盘输入字符,按回车键表示输入结束。
* 回车键也算一个字符,放在缓冲区中(后面会在VS调试监视出给大家看)*
下面是 getchar() 函数的声明:
int getchar(void)
该函数的返回类型是int类型,返回值是用户输入字符的ASCII码值。
案例
基础的例子就不列举了,来说说今天刷C语言题目遇到的一个题目
判断输入的是否是字母(简单的题目)
int main()
{char a = '0';scanf("%c", &a);if (a >= 'a' && a <= 'z' || a >= 'A' && a <= 'Z')printf("YES\n");elseprintf("NO\n");return 0;
}
直接判断就可以了,但是我想着可不可以实现多组输入,输入一个字符判断一个字符(虽然题目没说到)于是我就尝试写了如下代码
int main()
{char a = '0';while (scanf("%c", &a) != EOF){if (a >= 'a' && a <= 'z' || a >= 'A' && a <= 'Z')printf("YES\n");elseprintf("NO\n");}return 0;
}
此时运行结果如下:
运行出来为啥和我想的不一样,不应该输入一个只判断一次吗?怎么又进了一次循环并自动判断为false输入NO了?然后我开始调试。
这是输入了a之后跳出了第一次循环
然后我按F10程序继续跑了,进入了第二次循环并直接运行了else后的语句
此时我才发现变量a的值发生了变化,变成了'\n',我才意识到键盘录入按回车结束时,回车也算作一个字符'\n'被留在了缓冲区,所以进行了第二次判断字符‘\n’,则输出NO,这时候我才了解到getchar()函数在这里使用的好处了,所以我对代码进行了更改
此时程序重新运行
要想再次使用scanf就要在这里调用getchar()把缓冲区的 '\n' 给拿走,才能完成多组输入字符的判断
图文解释:
因为scanf把\n前面的字符读取了,此时缓冲区还剩下'\n',所以在代码中加入一条getchar()将'\n'做清除,方便后续程序的正常进行。
总结
以上就是我对getchar()理解,希望对大家有帮助,有待改进的地方希望大家随时指出!
觉得内容还不错的话记得点赞
C语言getchar()函数理解及其用法相关推荐
- c语言getchar函数_C语言中带有示例的getchar()函数
c语言getchar函数 C语言中的getchar()函数 (getchar() function in C) The getchar() function is defined in the < ...
- c语言getchar函数的作用,c语言中getchar的用法函数用法
当程序调用getchar时.程序就等着用户按键.用户输入的字符被存放在键盘缓冲区中.直到用户按回车为止.下面小编就跟你们详细介绍下c语言中getchar的用法,希望对你们有用. c语言中getchar ...
- 每日一讲:C语言getchar函数的用法
getchar 由宏实现:#define getchar() getc(stdin). getchar有一个int型的返回值.当程序调用getchar时.程序就等着用户按键.用户输入的字符被存放在键盘 ...
- C语言 getchar()函数详解
getchar()函数机制 getchar()函数实际上是int getchar(void),所以它返回的是ASCII码,所以只要是ASCII码表里有的字符它都能读取出来.在调用getchar()函数 ...
- C语言--getchar()函数超详细解析(多维度分析,小白一看就懂!!!)
目录 一.前言 二.什么是getchar()函数 三.getchar()函数的返回类型与机制 四.连续单个字符串 (代码演示) 五.getchar()函数其他用法,实战演练(重点) (1)按照题目写出 ...
- sqrt函数原型c语言,C语言sqrt函数的实例用法讲解
前言继承是OOP设计中的重要概念.在C++语言中,派生类继承基类有三种继承方式:私有继承(private).保护继承(protected)和公有继承(public).一.继承规则继承是C++中的重要特 ...
- C语言_函数指针高级用法
什么是函数指针? 函数是计算机程序中一段可执行代码的封装,当程序运行时函数会被加载到内存布局中的代码段位置,这段代码会有一段内存空间,有内存空间就会有地址,这段内存空间的首地址,就是函数的地址 每当我 ...
- 关于c语言printf函数的详细用法
C语言的printf输出格式控制 1.转换说明符 %a(%A) 浮点数.十六进制数字和p-(P-)记数法(C99) %c 字符 %d 有符号十进制整数 %f ...
- C语言getchar函数
基本句式getchar() 直接看图 看不懂putchar点下面 putchar语句
最新文章
- wchar用wcout输出正常cout是?
- 那个博士生以死控告的教授,被ACM撤销了会员资格
- python 反向传值_Django中reverse反转并且传递参数的方法
- 关于 SAP 电商云 Spartacus UI 路由 routes 配置的数据源问题
- php 数组元素分类,数组分类、定义及遍历
- 写 一个PHP脚本遇到的问题总结
- JavaSE03: Arrays工具类的使用及简单数组算法
- linux和windows图形运算效率,linux和windows下UDP发送效率的有趣比较
- Charles 4.2 HTTPS抓包,乱码设置,证书信任,证书安装
- 单片机c语言案例教程,单片机C语言案例教程
- 总线外设基础1——i2s,i2c,uart,spi,touchpanel,lcd
- C语言趣味题:猜数字游戏(含代码创建思路与过程)
- 一分钟教你们证件照如何换背景颜色,快来收藏
- 解决linux系统下U盘变成只读,无法新建文件夹
- 谷歌升级商业搜索软件
- Eclipse中Ant的使用
- MyBatis插件:通用mapper的配置和应用
- 面试陈述切忌千篇一律
- 辛泓睿:数字资产化,万物皆可NFT吗?
- ruoyi 富文本编辑器Quill-取消自动聚焦