簡易進度條的實現

2021-08-13 01:28:07 字數 1920 閱讀 5060

引子

看如下程式:

執行這個程式

結果發現三秒過後會先輸出haha 然後再輸出hehe。(這個停留的三秒要自己去親測感受一下,在上是看不出來的)

接著看,當把sleep(3);放到fprintf(stderr,"haha");後邊,然後再執行,會發現,會先輸出haha,過三秒之後才會輸出hehe

這是為什麼呢?

其實輸出函式printf在輸出字串「hehe」時,並不是說輸入乙個字元就將其輸出,而是將它放入到核心的快取區中,等待一些特定的時機才輸出。

輸出快取區在遇到如下四種情況才會重新整理到目標位置

1、遇到換行符 \n

2、遇到fflush(stdout)

3、當關聯了scanf之類的輸入

4、當程式退出(exit)或者main函式退出

5、當核心的快取區滿了

標準出錯是不會快取的,因為標準出錯(stderr)相當於是很緊急的情況,既然是很緊急的情況就不會按照普通事件那樣處理了。

知道了這些,我們可以來試著實現一下進度條了(之前一篇部落格剛講了makefile和make的使用,為了將其練習鞏固一下,在這裡就使用makefile來管理我們的進度條,如果讀者覺得沒必要用makefile的話,文章末尾附有完整**,可以只建立乙個檔案來實現)

首先建立幾個原始檔,並將程式分別寫入對應的原始檔中。

使用命令 vim jindutiao.h 開啟jindutiao.h檔案,按 i 後輸入下列內容

使用指令:wq儲存退出之後

使用命令vim jindutiao.c 開啟 jindutiao.c檔案,按 i 後輸入以下內容

使用指令:wq儲存退出之後

使用命令vim main.c  開啟main.c檔案,按 i 後輸入以下內容

原始檔都編輯好了,接下來就是編輯makefile檔案了

使用命令 vim makefile 開啟makefile檔案,輸入以下內容

最後就是是使用make指令來編譯這些原始檔了

到這裡簡易的進度條就已經實現成功了。(進度條應該是乙個動態的過程,是不能看到這樣乙個動態過程的,需要讀者自己親自實現,來感受這個動態的過程)

下邊附上完整的**:

#include #include void progress_bar()

printf("\n");

}int main()

如果有讀者不懂上邊的makefile和make的使用可以參見博文

也可以將上述**寫入乙個test.c(隨便乙個 .c 檔案),然後儲存退出,使用命令 gcc test.c編譯,將生成乙個可執行的a.out檔案,使用命令 ./a.out將其執行,就可以看到最後結果了。這個非常簡單,就不在這多做演示了。

進度條實現簡易demo

直接上效果圖 瀏覽 的時候看到的小demo,記下筆記。乙個很簡單的進度條,原 處理較為全面,這裡我改了一下便於新手檢視。html 如下 div class container p loading p h1 0 h1 hr div css部分 body 處理容器 container 處理 loadin...

Linux下c實現簡易進度條

進度條 顧名思義就是看計算機處理任務時的速度,完成度,反正過程啥的。就是這樣子 我們實現乙個簡易版的 我們需要的知識make命令編譯 因為方便。不了解make指令的先看看make指令介紹 以及我們要了解換行 n 和回車 r 的區別 我們下來開始寫 細聊 打算 include includevoid ...

進度條的實現

1 實現要求 的數量在不斷地增加,後面的數字也隨著增加,圖示不停地在旋轉 2 用到的基礎知識 n 換行 lf 將當前位置移到下一行開頭 r 回車 cr 將當前位置移到本行開頭,每次游標會回到行首 代表乙個反斜線字元 0 空字元 null 3 程式的實現 index裡面是圖示的實現,100s 是左端對...