1. 程式人生 > >linux 第一個小程式 進度條

linux 第一個小程式 進度條

今天在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);可提高列印效率