printf sleep \ n

时间:2012-07-11 08:12:55

标签: c printf

当我看到这种奇怪的行为时,我正在尝试一些东西。有人可以向我解释一下。

#include<stdio.h>
int main()
{
    printf("utkarsh");
    sleep(10);
    printf("dixit");
}

预期的输出是打印“utkarsh”然后等待10秒,在它旁边打印“dixit”。 但我观察到的是它等待10秒并且打印“utkarshdixit”。

如果我在utkarsh末尾添加\ n,它会按预期工作。

printf("utkarsh\n");

有人可以帮我理解为什么我会看到这样的行为吗?

4 个答案:

答案 0 :(得分:5)

你正在加入缓冲。

尝试做

fflush(stdout);

在睡觉前

答案 1 :(得分:2)

printf正在缓冲,直到您决定撰写'\n'

您可以使用:flush强制打印

答案 2 :(得分:2)

Here, try this

#include<stdio.h>
int main()
{
    printf("utkarsh");
    fflush(stdout);
    sleep(10);
    printf("dixit");
}

标准的缓冲正在进行中。你必须明确地冲洗它。

答案 3 :(得分:1)

stdout流中有缓冲。因此,你需要在睡觉前冲洗一次。

但是当你使用'\ n'时,c运行时会自动刷新stdout缓冲区。因此,您会看到此行为