0

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

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

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

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

printf("utkarsh\n");

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

4

4 回答 4

5

你正在缓冲。

试着做

fflush(stdout);

在睡觉前

于 2012-07-11T08:15:09.483 回答
2

printf正在缓冲,直到您决定编写一个'\n'.

您可以使用 :flush强制打印

于 2012-07-11T08:16:27.697 回答
2
Here, try this

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

正在缓冲标准输出。你必须明确刷新它。

于 2012-07-11T08:16:38.367 回答
1

标准输出流中有缓冲。因此,您需要在睡觉前冲洗一次。

但是当您使用 '\n' 时,c 运行时会自动为您刷新标准输出缓冲区。因此,您会看到这种行为

于 2012-07-11T08:19:49.550 回答