除印刷换行外还有什么'\ n'?

时间:2012-10-31 05:59:55

标签: c fork printf

评论第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
        }
    }
}

2 个答案:

答案 0 :(得分:2)

\ n也会刷新标准输出缓冲区。如果它不存在,则您可能先前已在其中输入数据。刷新还意味着一旦处理完就迫使printf在屏幕上打印。否则它是缓冲输出,你永远无法预测OS缓冲输出的时间以及准确选择实际打印的时间。

答案 1 :(得分:2)

您可能是缓冲区刷新未发生的受害者。 字符串末尾的'\ n'使输出缓冲区刷新。如果没有刷新输出缓冲区,那么您也可能从前一个printf调用获得一些输出。所以最好在打印字符串的末尾使用'\ n'来确保我们刷新缓冲区。 您可以查看此question