我发现一个奇怪的事情。如果我使用printf("hello\n")
,它会显示“你好”,1秒后,显示“世界”。但如果我使用fprintf(stdin,"hello\n")
,它只显示“世界”1秒后。
#include <stdio.h>
#include <unistd.h>
int main()
{
printf("hello\n"); // fprintf(stdin,"hello\n");
sleep(1);
fprintf(stderr,"world\n");
sleep(1);
return 0;
}
字符串
我想知道为什么两个函数的行为不同?
1条答案
按热度按时间pdtvr36n1#
stdin
文件句柄是标准 * 输入 * 句柄,而不是标准输出句柄。ISO C标准明确指出标准输入是“用于阅读常规输入”,并没有提到写入的能力。
换句话说,你的两个片段
printf(x)
和fprintf(stdin, x)
(对于任意的x
)是 * 不 * 相同的。fprintf
的等价物是fprintf(stdout, x)
。