目录

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()函数理解及其用法相关推荐

  1. c语言getchar函数_C语言中带有示例的getchar()函数

    c语言getchar函数 C语言中的getchar()函数 (getchar() function in C) The getchar() function is defined in the < ...

  2. c语言getchar函数的作用,c语言中getchar的用法函数用法

    当程序调用getchar时.程序就等着用户按键.用户输入的字符被存放在键盘缓冲区中.直到用户按回车为止.下面小编就跟你们详细介绍下c语言中getchar的用法,希望对你们有用. c语言中getchar ...

  3. 每日一讲:C语言getchar函数的用法

    getchar 由宏实现:#define getchar() getc(stdin). getchar有一个int型的返回值.当程序调用getchar时.程序就等着用户按键.用户输入的字符被存放在键盘 ...

  4. C语言 getchar()函数详解

    getchar()函数机制 getchar()函数实际上是int getchar(void),所以它返回的是ASCII码,所以只要是ASCII码表里有的字符它都能读取出来.在调用getchar()函数 ...

  5. C语言--getchar()函数超详细解析(多维度分析,小白一看就懂!!!)

    目录 一.前言 二.什么是getchar()函数 三.getchar()函数的返回类型与机制 四.连续单个字符串 (代码演示) 五.getchar()函数其他用法,实战演练(重点) (1)按照题目写出 ...

  6. sqrt函数原型c语言,C语言sqrt函数的实例用法讲解

    前言继承是OOP设计中的重要概念.在C++语言中,派生类继承基类有三种继承方式:私有继承(private).保护继承(protected)和公有继承(public).一.继承规则继承是C++中的重要特 ...

  7. C语言_函数指针高级用法

    什么是函数指针? 函数是计算机程序中一段可执行代码的封装,当程序运行时函数会被加载到内存布局中的代码段位置,这段代码会有一段内存空间,有内存空间就会有地址,这段内存空间的首地址,就是函数的地址 每当我 ...

  8. 关于c语言printf函数的详细用法

    C语言的printf输出格式控制 1.转换说明符 %a(%A)     浮点数.十六进制数字和p-(P-)记数法(C99) %c         字符 %d         有符号十进制整数 %f   ...

  9. C语言getchar函数

    基本句式getchar() 直接看图 看不懂putchar点下面 putchar语句

最新文章

  1. wchar用wcout输出正常cout是?
  2. 那个博士生以死控告的教授,被ACM撤销了会员资格
  3. python 反向传值_Django中reverse反转并且传递参数的方法
  4. 关于 SAP 电商云 Spartacus UI 路由 routes 配置的数据源问题
  5. php 数组元素分类,数组分类、定义及遍历
  6. 写 一个PHP脚本遇到的问题总结
  7. JavaSE03: Arrays工具类的使用及简单数组算法
  8. linux和windows图形运算效率,linux和windows下UDP发送效率的有趣比较
  9. Charles 4.2 HTTPS抓包,乱码设置,证书信任,证书安装
  10. 单片机c语言案例教程,单片机C语言案例教程
  11. 总线外设基础1——i2s,i2c,uart,spi,touchpanel,lcd
  12. C语言趣味题:猜数字游戏(含代码创建思路与过程)
  13. 一分钟教你们证件照如何换背景颜色,快来收藏
  14. 解决linux系统下U盘变成只读,无法新建文件夹
  15. 谷歌升级商业搜索软件
  16. Eclipse中Ant的使用
  17. MyBatis插件:通用mapper的配置和应用
  18. 面试陈述切忌千篇一律
  19. 辛泓睿:数字资产化,万物皆可NFT吗?
  20. ruoyi 富文本编辑器Quill-取消自动聚焦

热门文章

  1. 程序员表白代码来了!太秀了。。
  2. 千年3单机修改服务器经验,千年3练级挂经验
  3. MQTT mosquitto
  4. 【概率论】概率分布函数
  5. java jpanel 半透明_java – 透明JPanel
  6. 使用Docker本机部署Django项目
  7. [HTML]URL(统一资源定位器)
  8. AU7850 电流声
  9. 服务器加固指南 -- 思路分享
  10. 不知道吃啥?随机数教你吃东西(娱乐)