what else '\n' do except printing newline?

喜夏-厌秋 提交于 2020-01-05 13:01:52

问题


After commenting Line 2 "Hello" is printed nine times but commenting Line 1 outputs "Hello" more than nine times. My question is what's the role of '\n' in this?

#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
        }
    }
}

回答1:


\n also flushes the standard output buffer. If it is not present, it is possible that you have previously entered data in it. Flushing also means it forces printf to print on the screen as soon as \n is processed. Otherwise it is buffered output and you can never predict how long would OS buffer your output and when precisely it chooses to actually print.




回答2:


You might be a victim of buffer flush not happening. '\n' at the end of the string makes the output buffer flush. If the output buffer is not flushed, then you might get some output from the previous printf call as well. So it is always better to use a '\n' at the end of a printing string to make sure we flush the buffer. You can look at this question.



来源:https://stackoverflow.com/questions/13152062/what-else-n-do-except-printing-newline

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!