c - 有关缓冲、getchar() 和 scanf() 的问题吗?

标签 c buffer

我正在学习 C,并且遇到一些问题。请看下面的图片:

enter image description here

读高亮文字时,我很困惑。是不是:当用户开始输入一些输入时,输入立即直接放入缓冲区中。当按下 Enter 键('\n')时,程序会从缓冲区读取并获取输入,然后清除缓冲区?

如果是,假设在程序中,我使用:scanf("%d", &a_variable),然后输入123astring,然后123 已从缓冲区中读取并清除。那么,缓冲区中现在包含“astring”?

我说得对吗?还是我误解了什么?

最佳答案

确实有两个缓冲区。 第一个是他们正在谈论的。它允许用户输入内容,然后删除等,而程序看不到任何内容。 第二个缓冲区将保存剩余的“astring”。

一个好的思考方法是,当按下 Enter 键时,第一个缓冲区会传递到第二个缓冲区。第二个缓冲区由 scanf 读取。如果它是空的,程序就会等待。

第二个缓冲区几乎总是存在的。如果不是,您必须在用户键入时准确运行 scanf,即使在“无缓冲”情况下也是如此。

关于c - 有关缓冲、getchar() 和 scanf() 的问题吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5214714/

相关文章:

c - Node : How to send 16bit binary information

python - 写入大型二进制文件时出现内存错误

c - 向 Eclipse 项目添加 C/C++ 特性

在 C 中连接字符串

c - 如何处理输出结构中的字符串分配

node.js - 创建 NodeJS Buffer 的子类

将两个缓冲区合并为一个

c - 为什么这个 C 程序会遇到运行时错误?

c - 按位取余运算符

java - 如何解决此缓冲区问题?