评论第2行后,“Hello”打印9次,但评论第1行输出“Hello”超过9次。我的问题是'\ n'在这个中的作用是什么?
#include<stdio.h>
#include<stdlib.h>
int main()
{
int tmp[10], i, n=0;
for(i=0;i<9;i++)
{
tmp[i]=fork();
if(tmp[i]>0)
break;
else
{
printf("Hello\n"); // ---- Line 1
printf("Hello "); // ---- Line 2
}
}
}
答案 0 :(得分:2)
\ n也会刷新标准输出缓冲区。如果它不存在,则您可能先前已在其中输入数据。刷新还意味着一旦处理完就迫使printf在屏幕上打印。否则它是缓冲输出,你永远无法预测OS缓冲输出的时间以及准确选择实际打印的时间。
答案 1 :(得分:2)
您可能是缓冲区刷新未发生的受害者。 字符串末尾的'\ n'使输出缓冲区刷新。如果没有刷新输出缓冲区,那么您也可能从前一个printf调用获得一些输出。所以最好在打印字符串的末尾使用'\ n'来确保我们刷新缓冲区。 您可以查看此question。