【问题标题】:what else '\n' do except printing newline?除了打印换行符,'\n' 还能做什么?
【发布时间】:2012-10-31 05:59:54
【问题描述】:

注释第 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
        }
    }
}

【问题讨论】:

标签: c fork printf


【解决方案1】:

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

【讨论】:

    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-04-20
      • 1970-01-01
      • 1970-01-01
      • 2011-01-08
      • 2012-08-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多