linux 第一個小程式 進度條
阿新 • • 發佈:2019-02-20
今天在linux環境下寫一個進度條,然後分享三個小知識。
#include<stdio.h>
#include<unistd.h>
int main()
{
int i = 0;
char bar[102];
const char *lable = "-\\|/";
bar[0] = '\0';
while(i <= 100)
{
printf("[%-101s][%d%%][%c]\r", bar.lable);
fflush(stdout);
bar[i++] = '#';
bar[i] = '\0';
usleep(10000);
}
}
知識點一:回車(\r)和換行(\n)的區別。
回車 \r 本義是游標重新回到本行開頭。 換行 \n 本義是游標往下一行(不一定到下一行行首)知識點二:Sleep,sleep和usleep。
標頭檔案:#include <unistd.h>
定義函式:unsigned int sleep(unsigned int seconds);函式說明:sleep()會令目前的程序暫停, 直到達到引數seconds 所指定的時間, 或是被訊號所中斷.
返回值:若程序暫停到引數seconds 所指定的時間則返回0, 若有訊號中斷則返回剩餘秒數. usleep(n) //n微秒
Sleep(n) //n毫秒
sleep(n) //n秒
知識點三:fflush。
fflush函式的作用:把檔案流中未寫出的資料全部寫出去。 函式名: fflush 功 能: 清除讀寫緩衝區,需要立即把輸出緩衝區的資料進行物理寫入時 標頭檔案:stdio.h 原型:int fflush(FILE *stream) 其中stream是要衝洗的流 fflush(stdin)重新整理標準輸入緩衝區,把輸入緩衝區裡的東西丟棄[非標準] fflush(stdout)重新整理標準輸出緩衝區,把輸出緩衝區裡的東西列印到標準輸出裝置上 printf("。。。。。。。。。。。");後面加fflush(stdout);可提高列印效率