預備知識
? ? ? ? 1.回車換行
? ? ? ? ? ? ? ? 回車換行是兩個動作;
? ? ? ? ? ? ? ? 回車是將光標移至當前行的最左側,
? ? ? ? ? ? ? ? 換行是將當前光標位置移至下一行的相同位置。
? ? ? ? 2.緩沖區(qū)
? ? ? ? ? ? ? ? 由c語言維護的一段內存?
? ? ? ? ? ? ? ? 1.stdout:標準輸出?
? ? ? ? ? ? ? ? 2.stdin? :標準輸入
? ? ? ? ? ? ? ? 3.stderr:標準錯誤
? ? ? ? ? ? ? ? linux系統(tǒng)中,一般是緩沖區(qū)滿或者程序運行結束后進行刷新,這樣達不到我們想要的效果,于是我們用fflush清空緩沖區(qū),強制刷新。
準備工作
? ? ? ? 1.創(chuàng)建三個文件
????????2.在processBar.h 和 main.c 中寫入以下內容
????????3.創(chuàng)建makefile文件,將上述processBar.c和main.c兩個文件一次編譯形成可執(zhí)行文件?
?????????
?代碼實現
? ? ? ? 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");
}
結果展示??
文章來源:http://www.zghlxwxcb.cn/news/detail-687591.html
?文章來源地址http://www.zghlxwxcb.cn/news/detail-687591.html
到了這里,關于Linux 小程序-進度條的文章就介紹完了。如果您還想了解更多內容,請在右上角搜索TOY模板網以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網!