今天同学问到一个问题,他想延时输出一串数字,为了美化程序嘛,可是在程序中加入sleep(1)好像不行,因为要等循环执行完了,等了n个睡眠之后才能一下全输出在屏幕上了,后来我给他想了一个笨方法,就是用for空循环,执行差不多一亿次,可以实现了,问题又来了,我实现的时候printf()中有个'\n',当把'\n'去掉的时候,又出现了等待n久一次全部打印的情况,唉!这是什么情况呢??只好baidu一下!
原来,在打印的时候,要输出的内容并没有马上打印在屏幕上,而是存入了缓存中,解决方法就是用fflush()强制把缓冲内容打印即可。例如:
1 #include <stdio.h>
2 main()
3 {
4 int a;
5 for(a=1;a<10;a++)
6 {
7 printf("%d",a);
8 fflush(stdout);
9 sleep(1);
10 }
11 }