Linux 小程序-进度条

预备知识

        1.回车换行

                回车换行是两个动作;

                回车是将光标移至当前行的最左侧,

                换行是将当前光标位置移至下一行的相同位置。

        2.缓冲区

                由c语言维护的一段内存 

                1.stdout:标准输出 

                2.stdin  :标准输入

                3.stderr:标准错误

                linux系统中,一般是缓冲区满或者程序运行结束后进行刷新,这样达不到我们想要的效果,于是我们用fflush清空缓冲区,强制刷新。

准备工作

        1.创建三个文件

        2.在processBar.h 和 main.c 中写入以下内容

        3.创建makefile文件,将上述processBar.c和main.c两个文件一次编译形成可执行文件 

         

 代码实现

        1.processBar.h代码编写
  1 #pragma once //防止头文件重复包含
  2 #include<stdio.h>
  3 #define BODY '-'  //设置进度条的身体样式
  4 #define RIGHT '>' //设置进度条的头部样式
  5 #define NUM 102    
  6 #define TOP 100    //设置倒计时时长
  7 void processbar(int speed);  //声明进度条函数
        2.main.c代码编写
  1 #include "processBar.h" 
  2 int main()
  3 {
  4     processbar(50000);  //调用倒计时函数                                                                               
  5     return 0;
  6 }   
        3. processBar.c代码编写
#include "processBar.h"
#include <string.h>
#include <unistd.h>
//设置进度条的颜色
#define YELLOW "\033[1;33m"
#define NONE "\033[m"
//设置进度条旁边的转动圈
char  *lable="|/-\\";
void processbar(int speed)
{
    char bar[NUM];
    memset(bar,'\0',sizeof(bar));
    int cnt=0;
    int len=strlen(lable);
    while(cnt<=TOP)
    {
        printf("["YELLOW"%-100s"NONE"]""[%d%%][%c]\r",bar,cnt,lable[cnt%len]);                        
        fflush(stdout); //强制刷新
        bar[cnt++]=BODY;
        if(cnt<100) bar[cnt]=RIGHT;
        usleep(speed); // sleep(1) 这边采用毫秒为单位快一点
   }
   printf("\n");
}

结果展示  

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值