gpt4 book ai didi

c - getchar() 和 putchar() 函数背后的理论

转载 作者:太空狗 更新时间:2023-10-29 17:15:05 26 4
gpt4 key购买 nike

我正在研究 K&R 的“The C Programming Language”,示例 1.5 难倒了我:

#include <stdio.h>

/* copy input to output; 1st version */
int main(int argc, char *argv[])
{
int c;

while ((c = getchar()) != EOF)
putchar(c);

return 0;
}

我知道“getchar()”需要一个字符供“putchar()”显示。但是,当我在终端运行程序时,为什么我可以传递一整行字符来显示'putchar()'?

最佳答案

因为您的终端是行缓冲的。 getchar()putchar() 仍然只能处理单个字符,但终端会等待将字符提交给程序,直到您输入整行。然后 getchar() 从该缓冲区中逐一获取字符,然后 putchar() 逐一显示它们。

补充:终端是行缓冲的,这意味着它在遇到换行符时向程序提交输入。一次提交数据 block 而不是一个字符通常更有效。它还为用户提供了在按回车键之前编辑该行的机会。

注意:可以通过禁用 canonical mode for the terminal 来关闭行缓冲并调用setbufstdin 上使用 NULL

关于c - getchar() 和 putchar() 函数背后的理论,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17552458/

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