gpt4 book ai didi

c - '\n'真的是用来刷的吗?

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:43:45 26 4
gpt4 key购买 nike

#include <stdio.h>
#include <unistd.h>

int main (){

while(1){
fprintf (stdout,"hello-out");
fprintf (stderr,"hello-err");
sleep (1);
}

return 0;
}

好吧,我以为这会简单地打印,hello-out 然后 hello-err 休息一秒钟并再次打印这些文字,但是不,发生了一些奇怪的事情,它只是打印 hello-err 然后休息一秒钟然后做又是同样的事情。为什么?

等等,然后我决定将它们打印在不同的行上,现在它成功了。

fprintf (stdout,"hello-out\n");
fprintf (stderr,"hello-err\n");

------------ 与------------相同

fprintf (stdout,"hello-out\n");
fprintf (stderr,"hello-err");

那么'\n'在这里的重要性是什么?这与潮红有关吗?因为我读到 '\n' 用于冲洗。

并且还在标准输出上打印这两个文字,不会产生任何输出:(

fprintf (stdout,"hello-out");
fprintf (stdout,"hello-err");

又是为什么?

最佳答案

默认情况下,stdout 是行缓冲的。这意味着除非您显式刷新它,否则无法保证您的写入何时会被写入目的地,直到它看到 \n

stderr 另一方面,默认情况下是无缓冲的。每次写入都会立即写入。

关于c - '\n'真的是用来刷的吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14501152/

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