gpt4 book ai didi

c - 为什么此代码打印行而不是单个字符

转载 作者:太空宇宙 更新时间:2023-11-04 06:11:30 25 4
gpt4 key购买 nike

#include <stdio.h>
int main()
{
int c;
while((c=getchar())!=EOF)
putchar(c);
return 0;
}

在我对 C 的有限接触中,只要 C!=EOF 就会执行 while 条件,这基本上会打印 c,然后等待下一个字符并尝试检查是否违反条件。因此,对于我们输入的每个字符,putchar 都会执行。但是,当我运行可执行文件时,似乎发生的事情是打印语句仅在我按下换行符 (Enter) 时才起作用,并且它有某种缓冲区,可以在输入中打印整行。在按下新行之前,我没有在代码中看到任何缓冲区来保存字符,那么这里做了什么?在按下新行之前,这些字符存储在哪里?

最佳答案

当像这样从控制台读取时,您的程序实际上根本不会接收任何输入,直到您按下 enter,然后它会立即读取并处理整行。

在您按下回车键之前,您的程序甚至不知道这些字符的存在,此时它们被发送到标准输入缓冲区。从这里开始,您的循环将读取并打印每个字符(包括换行符),直到缓冲区为空(意味着它将等待更多输入)或到达文件末尾。

关于c - 为什么此代码打印行而不是单个字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55202648/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com