打印到标准输出[重复]

问题描述 投票:0回答:1

这个问题在这里已有答案:

我有一个do循环,示意性地看起来像这样

int iterations = 0 ;

do {
    iterations += 1 ;
    printf("iterations\t%d\n", iterations) ;
    somefunction(does something) ;
} while (some condition) ;

printf("done iterating\n") ;

当我使用格式迭代\ t%d \ n“(以\ n结尾的行)时,对于每次迭代,迭代编号将打印到stdout(在这种情况下是终端屏幕)。而当我使用”iterations \ t时%d \ t“(以\ t结尾)每次迭代的迭代次数只有在到达printf行时才打印到标准输出(”完成迭代\ n“)。

我的问题是:我是否总是需要使用“\ n”来终止字符串以打印到stdout?我很困惑,因为我的理解是当我使用fprintf(“\ n”)打印到文件时,我不需要在字符串的末尾使用任何“\ n”我打印到fprintf文件(“ “)成功打印到文件。

c stdout
1个回答
4
投票

stdout缓冲。它节省了write系统调用 - 这是昂贵的。它涉及用户空间和内核空间之间的上下文切换。

所以为了加快速度 - 它是缓冲的,只有在遇到新行时才会写入

或者使用fflush(stdout)

© www.soinside.com 2019 - 2024. All rights reserved.