分页: 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
时间是有点短,但这个应该不是问题所在。
后面加一句
应该是楼主所期望的。
当然,
时间增加一个数量级效果会更好。
发表于 : 2008-01-06 11:30
由 xxmv99
一觉睡来,这么多大大关注着,感动啊....
马上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的.