【C语言】getchar()函数缓冲区

【C语言】getchar()函数缓冲区目录前言 gethcar 函数的介绍 缓冲区结束语 专栏 C 语言从 0 到 1 送给各位的一句话 种一棵树最好的时间是十年前 其次是现在 说明 无论如何 当我们下定决心的时候 那就是来得及的 你只管努力 剩下的交给天意 前言 大家好啊 由于之前有关 C 语言的博客写的比较少 不够详细 加之较少的时间写博客 但是我会尽己所能 把每一篇博客写好 帮助自己复习的同时 我也希望能够帮助到大家 让我们一起努力学习吧 接下去 我会陆续更新并且完善关于专栏 C

目录

前言?

gethcar()函数的介绍?

缓冲区

结束语



✨专栏:《C语言从0到1》

✨送给各位的一句话:种一棵树最好的时间是十年前,其次是现在

✨说明:无论如何,当我们下定决心的时候,那就是来得及的,你只管努力,剩下的交给天意!

【C语言】getchar()函数缓冲区


前言?

大家好啊,由于之前有关C语言的博客写的比较少,不够详细,加之较少的时间写博客,但是我会尽己所能,把每一篇博客写好,帮助自己复习的同时,我也希望能够帮助到大家,让我们一起努力学习吧。接下去,我会陆续更新并且完善关于专栏《C语言从0到1》这个系列,如果大家有需要的,一起学习的,记得点赞关注加收藏哦!?


下面,进入我们的主题getchar()函数?

getchar()函数的介绍?

首先,我们要知道getchar()的作用是读取一个字符。我们可以打开cplusplus官网看一看相关介绍:

int getchar ( void ); 从 stdin 获取字符 返回标准输入 (stdin) 中的下一个字符。 它等效于以 stdin 作为参数调用 getc。

?参数:无


↩️返回值:成功时,将返回字符读取(提升为 int 值)。 返回类型为 int 以适应特殊值 EOF,这表示失败: 如果标准输入位于文件末尾,则该函数返回 EOF 并设置 stdin 的 eof 指示符 (feof)。 如果发生其他读取错误,该函数也会返回 EOF,但会改为设置其错误指示器(ferror)。

这是中文版的介绍。下面我们来看看一个代码⬇️

【C语言】getchar()函数缓冲区

【C语言】getchar()函数缓冲区

getchar()是接收一个字符,而putchar()就是一个打印字符。

想想我们为什么用int类型,而不是用char类型??

看看上面的介绍,会返回EOF,EOF又是什么东西呢??

【C语言】getchar()函数缓冲区

EOF是-1,我们最好用int来接收,char类型只有一个字节。我们继续来看看一段代码:

【C语言】getchar()函数缓冲区

【C语言】getchar()函数缓冲区

我们每输入一个字符,那就打印一个字符,那我们该怎么去停止呢??

很简单,让getchar返回EOF的方法是:CTRL+Z我们来看看结果怎么样:

【C语言】getchar()函数缓冲区

此时光标会直接停下来?

此时我们还要知道为什么会自动换行:我们输入完以后,还按了一次回车,按了回车之后,其实缓冲区有2个字符。下面,来说说缓冲区问题✈️

缓冲区

我们还是来看看这一串代码:

【C语言】getchar()函数缓冲区

getchar()是直接从键盘读取字符吗?不是,与键盘之间有一个缓冲区,输入缓冲区。当输入缓冲区什么都没有的时候,getchar()此时就会等待:如一开始运行后光标一直在闪。当我们输入a的时候,我们需要回车,相当于给缓冲区输入一个a和\n。当getchar()读取的时候读取到a,a!=EOF,打印,继续下去遇到\n换行,进入下一行,这就是为什么会自动换行!

所以,我们可以知道getchar()可以用来清理缓冲区

知道了这些,getchar()到底有什么用呢?我们可以来举个例子?

【C语言】getchar()函数缓冲区

先来看看我们这段代码想要干什么——我们一开始想输入密码,然后输入Y/N确认密码是否正确,可是实际情况是什么呢?

【C语言】getchar()函数缓冲区

在我们输完密码之后,就直接输出NO了,都不需要确认,这是为什么呢?原因就是一开始scanf();我们输入的时候敲回车,scanf只把缓冲区中拿走,还剩下\n,而\n就被getchar()拿走了,都不需要我们输入了。这就是为什么会直接打印,我们不需要输入。

那怎么去改进呢?

我们可以多加一个getchar()去清理缓冲区

【C语言】getchar()函数缓冲区

【C语言】getchar()函数缓冲区

但是这种写法完全正确了吗?不一样啊?这只是临时去处理一下而已

【C语言】getchar()函数缓冲区

当我们加了空格之后,又出现了改进之前的情况,为什么这样子呢?scanf()实际上只读到空格之前就结束了,然后getchar()会遇到很多字符或者空格,但由于能力有限。

这时候如果缓冲区有很多字符的时候,我们该怎么办?循环解决呗

【C语言】getchar()函数缓冲区

【C语言】getchar()函数缓冲区

这时候就顺利解决完上面存在的问题了!

结束语

本次博客有关getchar()函数介绍就到这里了,如果觉得还不错的话,请多多支持哦!你的支持是我最大的动力!

【C语言】getchar()函数缓冲区

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/217125.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月18日 上午10:17
下一篇 2026年3月18日 上午10:18


相关推荐

  • 浅谈C++中的那些内存泄露

    浅谈C++中的那些内存泄露

    2022年1月31日
    40
  • 什么是SSH 以及常见的ssh 功能

    什么是SSH 以及常见的ssh 功能什么是SSH?简单说,SSH是一种网络协议,用于计算机之间的加密登录。如果一个用户从本地计算机,使用SSH协议登录另一台远程计算机,我们就可以认为,这种登录是安全的,即使被中途截获,密码也不会泄露。最早的时候,互联网通信都是明文通信,一旦被截获,内容就暴露无疑。1995年,芬兰学者TatuYlonen设计了SSH协议,将登录信息全部加密,成为互联网安全的一个基本解决方案,迅速在全世界获得推广,目…

    2022年7月13日
    15
  • 动态规划优缺点_巴西优化航空路线利用率

    动态规划优缺点_巴西优化航空路线利用率C 国有 n 个大城市和 m 条道路,每条道路连接这 n 个城市中的某两个城市。任意两个城市之间最多只有一条道路直接相连。这 m 条道路中有一部分为单向通行的道路,一部分为双向通行的道路,双向通行的道路在统计条数时也计为 1 条。C 国幅员辽阔,各地的资源分布情况各不相同,这就导致了同一种商品在不同城市的价格不一定相同。但是,同一种商品在同一个城市的买入价和卖出价始终是相同的。商人阿龙来到 C 国旅游。当他得知“同一种商品在不同城市的价格可能会不同”这一信息之后,便决定在旅游的同时,利用商品在

    2022年8月9日
    5
  • mysql怎么退出命令行_linux退出数据库命令

    mysql怎么退出命令行_linux退出数据库命令linux下fdisk命令的使用方法关于fdisk-l一些数值的说明Disk/dev/hda:80.0GB,80026361856bytes255heads,63sectors/track,9729cylindersUnits=cylindersof16065*512=8225280bytes这个硬盘是80G的,有255个磁面;63个扇区;9729个磁柱;…

    2025年7月27日
    5
  • Matplotlib实用绘图技巧总结

    Matplotlib实用绘图技巧总结matplotlib 实用绘图技巧总结在日常的业务数据分析 可视化是非常重要的步骤 这里总结了 matplotlib 常用绘图技巧 希望可以帮助大家更加更加高效的 美观的显示图表 作者 北山啦 Matplotlib 是 Python 的绘图库 它可与 NumPy 一起使用 提供了一种有效的 MatLab 开源替代方案 它也可以和图形工具包一起使用 如 PyQt 和 wxPython 文章目录 matplotlib 实用绘图技巧总结快速且正确的显示中文字体风格 matplotlib 绘图设置不显示边框 坐标轴

    2026年3月17日
    2
  • 【15】进大厂必须掌握的面试题-容器化和虚拟化面试

    Q1。什么是容器? 我的建议是首先解释对容器化的需求,容器用于提供一致的计算环境,从开发人员的笔记本电脑到测试环境,从过渡环境到生产环境。 现在给出容器的定义,一个容器包含一个完整…

    2020年10月23日
    419

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号