【发布时间】:2019-01-15 11:01:25
【问题描述】:
我一直试图围绕缓冲区和依赖它们的 I/O 函数展开思考,当我遇到这段 sn-p 代码时,起初看起来很直观,但一旦我开始使用它,我得到的结果出乎意料。
我使用了一个while循环来read()来自标准输入的每一行,printf()打印出我读到的内容。几次输入后,打印输出开始变得怪异,似乎关闭了,因为知道read() 每次调用它都会覆盖目标缓冲区。
char line[256];
int n;
while((n = read(STDIN_FILENO, line, 256) > 0)
printf("%s", line);
在第三次拍摄 (abcdefghj) 时,printf 似乎开始混合结果。
abc
abc
abcdef
abcdef
abcdefghj
cdeabcdefghj
【问题讨论】: