linux下进度条的编写和实现

实现了一个简单的进度条,主要技术啥的算不上,但有几个需要注意的点

  • 首先是回车符,回车符可不是\n,我们可以把\n看成是两个动作的合体,分别是,回车和换行,都有自己对应的符号,这利用回车符一直在同一个位置输出造成动态的假象
  • 因为没有用到\n和换行,但是C语言的printf是行缓冲输出,什么意思呢?就是说不满一行不输出,就是靠\n输出的,没有\n只好强制把缓冲中的数据输出出来,这就要用到函数fflush()

 

#include<stdio.h>                                                                
#include<string.h>                                                               
#include<unistd.h>                                                               
                                                                                 
void proc()                                                                      
{                                                                                
  int rate=0;                                                                    
  const char *running="|/-\\";                                                                                                                   
  char p[102];                                                                   
  memset(p,'\0',sizeof(p));                                                      
                                                                                 
  while(rate<=100)                                                               
  {                                                                              
    p[rate]='#';                                                                 
    printf("[%-102s][%d%%][%c]\r",p,rate,running[rate%4]);                       
    rate++;                                                                      
    fflush(stdout);                                                              
    sleep(1);                                                                    
  }                                                                              
}                                                                                
                                                                                 
                                                                                 
                                                                                 
                                                                                 
                                                                                 
int main()                                                                       
{                                                                                
  proc();                                                                        
  return 0;                                                                      
}                                                                                

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值