当前位置:网站首页>C语言库函数getchar()怎么使用
C语言库函数getchar()怎么使用
2022-07-28 13:36:00 【亿速云】
C语言库函数getchar()怎么使用
今天小编给大家分享一下C语言库函数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"); else printf("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"); else printf("NO\n"); } return 0;}此时运行结果如下:

运行出来为啥和我想的不一样,不应该输入一个只判断一次吗?怎么又进了一次循环并自动判断为false输入NO了?然后我开始调试。
这是输入了a之后跳出了第一次循环

然后我按F10程序继续跑了,进入了第二次循环并直接运行了else后的语句

此时我才发现变量a的值发生了变化,变成了'\n',我才意识到键盘录入按回车结束时,回车也算作一个字符'\n'被留在了缓冲区,所以进行了第二次判断字符‘\n’,则输出NO,这时候我才了解到getchar()函数在这里使用的好处了,所以我对代码进行了更改

此时程序重新运行

要想再次使用scanf就要在这里调用getchar()把缓冲区的 '\n' 给拿走,才能完成多组输入字符的判断
图文解释

因为scanf把\n前面的字符读取了,此时缓冲区还剩下'\n',所以在代码中加入一条getchar()将'\n'做清除,方便后续程序的正常进行。
以上就是“C语言库函数getchar()怎么使用”这篇文章的所有内容,感谢各位的阅读!相信大家阅读完这篇文章都有很大的收获,小编每天都会为大家更新不同的知识,如果还想学习更多的知识,请关注亿速云行业资讯频道。
边栏推荐
- bgp实验
- LeetCode 0142.环形链表 II
- Nport serial server configuration website (whether the serial server is from network port to serial port)
- 用友BIP CRM新品发布,赋能大中型企业营销增长
- Foundation of deep learning ---- GNN spectral domain and airspace (continuous improvement, update and accumulation)
- How to effectively conduct the review meeting (Part 1)?
- [ecmascript6] class
- MVC模型:日历系统
- [translation] how to choose a network gateway for your private cloud
- 草料二维码--在线二维码生成器
猜你喜欢

UFIDA BiP CRM new product launch enables large and medium-sized enterprises to grow their marketing

MySQL development skills - View

复制excel行到指定行

文献阅读(245)Roller

Solve the problem that uniapp wechat applet canvas cannot introduce fonts

Another way of understanding the essence of Hamming code

多所“双一流”大学,保研预报名启动!
![[线程安全问题] 多线程到底可能会带来哪些风险?](/img/79/112ab7e586b0bceb296dfddb2728be.png)
[线程安全问题] 多线程到底可能会带来哪些风险?

Redis sentinel mechanism

2022 low voltage electrician examination questions and answers
随机推荐
多所“双一流”大学,保研预报名启动!
复制excel行到指定行
八、picker用法 下拉框选择效果
OKR与GRAD
Clickhouse architecture and design
Four ways to create thread pools
How to write test cases in software testing technology
【翻译】如何为你的私有云选择一个网络网关
Read how to deploy highly available k3s with external database
[utils] fastdfs tool class
83. (cesium home) how the cesium example works
Cv:: mat conversion to qimage error
2022年熔化焊接与热切割考题及在线模拟考试
2022低压电工考试题及答案
[ecmascript6] set and map
HCIP第十一天
开源项目丨Taier1.2版本发布,新增工作流、租户绑定简化等多项功能
Minitest -- applet automation testing framework
3种方法解轮转数组
为什么jq的匿名函数 外部可以访问到里面的方法