字符终端里如何实现 数字的动态更新
刚才在线安装minGW,发现字符终端里的下载进度 的那些数据是动态的更新着的。不知道在windows的cmd 里怎么实现,有人知道吗 应该是行缓存的,不知具体是啥工具 该不会是退格字符吧,:L 应该是重新刷新行的,跟控制台程序的原理是一样的吧 4# qianyb
我也感觉应该是行刷新 "\r"就可以了。 6# 风云剑
写了一个小程序,找不到合适的调用函数,下面的代码勉强通过,
风云剑兄可否帮我改进一下#include<stdio.h>
#include<stdlib.h>
int main(){
int ii=0;
printf("http://bbs.emath.ac.cn\nhello,shis is asfkdlg\n");
for(ii=0;ii<10;ii++)
_sleep(1000),printf("\rhello,world,time elapsed:\t%d",ii*1000+ii);
}
gcc编译,有warning:
wayne.c: In function 'main':
wayne.c:7:1: warning: '_sleep' is deprecated (declared at d:\mingw452\bin\../lib/gcc/mingw32/4.5.2/../../../../include/stdlib.h:408) 找到了一个方法,gcc没有warning:#include<stdio.h>
#include<windows.h>
int main(){
int ii=0;
printf("http://bbs.emath.ac.cn\n");
for(ii=0;ii<10;ii++)
printf("\rhello,world,time elapsed:\t%d",ii*1000+ii),Sleep(1000);
return 0;
}
本帖最后由 wayne 于 2011-4-11 08:37 编辑
花了一个多小时,修修改改 实现了linux 命令行下 倒计时 时钟更新:
还加进去了signal.h ,不知能否基于这个实现一个响应鼠标或者键盘输入的功能来....#include <stdio.h>
#include <stdlib.h>
#include <signal.h>
#define N 10
void sig_int(int sig)
{ printf("\tOh,man!\033[0m\n");
exit(0);
}
int main()
{ int h=1,m=1,s=N-2;
signal(SIGINT,&sig_int);
printf("Don't bother me,I am counting down.\n"
"I only recongnize: ctrl+c\n");
while(1) {
printf("\r\033[1;31m%02d:%02d:%02d",h,m,s);
fflush(stdout);
if(h+m+s<=0) break; //死循环退出点
usleep(100000); //0.1秒一次数据更新
if(s==0){ s=N;
if (m>0) m--;
else h--,m=N-1;
}
s--;
}
printf("\nhmm,Good patience!\033[0m\n");
}
页:
[1]