找回密码
 欢迎注册
查看: 19544|回复: 8

[提问] 字符终端里如何实现 数字的动态更新

[复制链接]
发表于 2011-2-12 19:05:42 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?欢迎注册

×
刚才在线安装minGW,发现字符终端里的下载进度 的那些数据是动态的更新着的。 不知道在windows的cmd 里怎么实现,有人知道吗
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
 楼主| 发表于 2011-2-12 19:11:34 | 显示全部楼层
应该是行缓存的,不知具体是啥工具
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
 楼主| 发表于 2011-2-12 19:14:38 | 显示全部楼层
该不会是退格字符吧,
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 2011-2-14 08:50:23 | 显示全部楼层
应该是重新刷新行的,跟控制台程序的原理是一样的吧
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
 楼主| 发表于 2011-2-14 08:53:09 | 显示全部楼层
4# qianyb 我也感觉应该是行刷新
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 2011-2-14 14:23:13 | 显示全部楼层
"\r"就可以了。

评分

参与人数 1鲜花 +6 收起 理由
wayne + 6 谢谢!

查看全部评分

毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
 楼主| 发表于 2011-2-14 18:20:59 | 显示全部楼层
6# 风云剑 写了一个小程序,找不到合适的调用函数,下面的代码勉强通过, 风云剑兄可否帮我改进一下
  1. #include<stdio.h>
  2. #include<stdlib.h>
  3. int main(){
  4. int ii=0;
  5. printf("http://bbs.emath.ac.cn\nhello,shis is asfkdlg\n");
  6. for(ii=0;ii<10;ii++)
  7. _sleep(1000),printf("\rhello,world,time elapsed:\t%d",ii*1000+ii);
  8. }
复制代码
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)
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
 楼主| 发表于 2011-2-14 18:33:05 | 显示全部楼层
找到了一个方法,gcc没有warning:
  1. #include<stdio.h>
  2. #include<windows.h>
  3. int main(){
  4. int ii=0;
  5. printf("http://bbs.emath.ac.cn\n");
  6. for(ii=0;ii<10;ii++)
  7. printf("\rhello,world,time elapsed:\t%d",ii*1000+ii),Sleep(1000);
  8. return 0;
  9. }
复制代码
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
 楼主| 发表于 2011-4-11 08:15:01 | 显示全部楼层
本帖最后由 wayne 于 2011-4-11 08:37 编辑 花了一个多小时,修修改改 实现了linux 命令行下 倒计时 时钟更新: 还加进去了signal.h ,不知能否基于这个实现一个响应鼠标或者键盘输入的功能来....
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <signal.h>
  4. #define N 10
  5. void sig_int(int sig)
  6. { printf("\tOh,man!\033[0m\n");
  7. exit(0);
  8. }
  9. int main()
  10. { int h=1,m=1,s=N-2;
  11. signal(SIGINT,&sig_int);
  12. printf("Don't bother me,I am counting down.\n"
  13. "I only recongnize: ctrl+c\n");
  14. while(1) {
  15. printf("\r\033[1;31m%02d:%02d:%02d",h,m,s);
  16. fflush(stdout);
  17. if(h+m+s<=0) break; //死循环退出点
  18. usleep(100000); //0.1秒一次数据更新
  19. if(s==0){ s=N;
  20. if (m>0) m--;
  21. else h--,m=N-1;
  22. }
  23. s--;
  24. }
  25. printf("\nhmm,Good patience!\033[0m\n");
  26. }
复制代码
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
您需要登录后才可以回帖 登录 | 欢迎注册

本版积分规则

小黑屋|手机版|数学研发网 ( 苏ICP备07505100号 )

GMT+8, 2024-12-22 14:29 , Processed in 0.025385 second(s), 17 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表