打印到标准输出

11 浏览
0 Comments

打印到标准输出

我有一个do循环,它的示意如下:

int iterations = 0 ;
do {
    iterations += 1 ;
    printf("iterations\t%d\n", iterations) ;
    somefunction(做某事) ;
} while (某个条件) ;
printf("done iterating\n") ;

当我使用格式 iterations\t%d\n(以 \n 结尾的行),在每次迭代中迭代数都会被打印到标准输出(在本例中为终端屏幕)。而当我使用 "iterations\t%d\t"(以 \t 结尾的行)时,每次迭代的迭代数只会在达到 printf("done iterating\n") 这一行时才打印到标准输出。

我的问题是:我是否总是需要以 "\n" 结尾来将字符串打印到标准输出?我感到困惑,因为我了解到当我使用 fprintf("") 将内容打印到文件时,我不需要在打印的字符串末尾使用任何 "\n" 才能成功将内容打印到文件中。

0
0 Comments

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

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

或者使用fflush(stdout)。

0