C语言 为什么printf(“”)与fprintf(stdin,””)不同?

nfzehxib  于 11个月前  发布在  其他
关注(0)|答案(1)|浏览(102)

我发现一个奇怪的事情。如果我使用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;
}

字符串
我想知道为什么两个函数的行为不同?

pdtvr36n

pdtvr36n1#

stdin文件句柄是标准 * 输入 * 句柄,而不是标准输出句柄。
ISO C标准明确指出标准输入是“用于阅读常规输入”,并没有提到写入的能力。
换句话说,你的两个片段printf(x)fprintf(stdin, x)(对于任意的x)是 * 不 * 相同的。fprintf的等价物是fprintf(stdout, x)

相关问题