1

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

2 回答 2

2

\n 还刷新标准输出缓冲区。如果它不存在,则可能是您之前在其中输入了数据。刷新也意味着它会在处理 \n 后强制 printf 在屏幕上打印。否则它是缓冲输出,您永远无法预测操作系统会缓冲您的输出多长时间以及它何时选择实际打印。

于 2012-10-31T06:14:47.133 回答
2

您可能是缓冲区刷新未发生的受害者。字符串末尾的 '\n' 使输出缓冲区刷新。如果输出缓冲区没有被刷新,那么您可能还会从先前的 printf 调用中获得一些输出。因此,最好在打印字符串的末尾使用 '\n' 以确保我们刷新缓冲区。你可以看看这个问题

于 2012-10-31T06:19:29.987 回答