找回密码
 欢迎注册
查看: 11436|回复: 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.                                
  19.                 usleep(100000);        //0.1秒一次数据更新       
  20.                 if(s==0){ s=N;
  21.                 if (m>0) m--;
  22.                 else h--,m=N-1;       
  23.                 }
  24.                 s--;
  25.         }
  26.         printf("\nhmm,Good patience!\033[0m\n");
  27. }
复制代码
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
您需要登录后才可以回帖 登录 | 欢迎注册

本版积分规则

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

GMT+8, 2024-5-5 11:58 , Processed in 0.047439 second(s), 17 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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