#include<stdio.h>
int main()
{
printf("utkarsh");
sleep(10);
printf("dixit");
}
预期的输出是打印“utkarsh”然后等待10秒,在它旁边打印“dixit”。 但我观察到的是它等待10秒并且打印“utkarshdixit”。
如果我在utkarsh末尾添加\ n,它会按预期工作。
printf("utkarsh\n");
有人可以帮我理解为什么我会看到这样的行为吗?
答案 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缓冲区。因此,您会看到此行为