分页: 1 / 1

[问题]想实现动态显示0-100,为什么达不到预期的效果?

发表于 : 2008-01-06 2:07
xxmv99

代码: 全选

#include <stdio.h>

void Delay(int);

main()
{
	int i,j;
	
	for(i=0;i<=100;i++)
		{
			j = 1000;
			printf("%d\r",i);
			for(j;j!=0;j--)
			{
				Delay(1000);
			}
		}
}

void Delay(int n)
{
	int i;
	for(i=n;i!=0;i--)
		;
}

发表于 : 2008-01-06 2:08
xxmv99
刷一下就到100了,delay越长,只是在显示之前会有个时间...

发表于 : 2008-01-06 2:11
xxmv99
同样的代码,在tc环境下却可以,请教.

发表于 : 2008-01-06 3:18
ttand
没看出那里动态了。。

windows cmd printf 输出有延迟
shell 里面没有

这个不同吧

发表于 : 2008-01-06 10:48
dbzhang800
printf 有缓冲区的,
’按照你说的,至少也要加上 fflush(); 强制刷新。

发表于 : 2008-01-06 10:55
BigSnake.NET
时间设的太短了

代码: 全选

#include <stdio.h>

void Delay(int);

int main()
{
   int i,j;
   
   for(i=0;i<=100;i++)
      {
         j = 1000;
         printf("%d\n",i);
         for(j=1000;j!=0;j--)
         {
            Delay(100000);
         }
      }
   return 0;
}

void Delay(int n)
{
   int i;
   for(i=n;i!=0;i--)
      ;
} 
这样可以

发表于 : 2008-01-06 11:06
dbzhang800
时间是有点短,但这个应该不是问题所在。

代码: 全选

printf("%d\r",i); 
后面加一句

代码: 全选

fflush(stdout);
应该是楼主所期望的。




当然,

代码: 全选

 Delay(1000); 
时间增加一个数量级效果会更好。

发表于 : 2008-01-06 11:30
xxmv99
:P
一觉睡来,这么多大大关注着,感动啊....

马上test...

fflush()是什么?哪里可以查到这些函数...

以前都没有见过哈.

运行你的程序cpu 100%

发表于 : 2008-01-07 12:49
79hy
rt,直接用sleep吧。如果要再精确控制时间,可以用alarm

代码: 全选

#include <stdio.h>
#include <unistd.h>

int main()
{
   int i,j;

   for(i=0;i<=100;i++)
   {
      j = 1000;
      printf("%d\n",i);
      fflush(stdout);
      sleep(1);
   }
   return 0;
}


发表于 : 2008-01-07 13:03
bones7456
sleep是正解,不然耗CPU的.