九色91_成人精品一区二区三区中文字幕_国产精品久久久久一区二区三区_欧美精品久久_国产精品99久久久久久久vr_www.国产视频

Hello! 歡迎來(lái)到小浪云!


深度解析如何在Linux中創(chuàng)建自己的第一個(gè)系統(tǒng)程序—進(jìn)度條


&&

在我們的編譯器里面我們只想 進(jìn)行回車(chē)的話(huà),那么我們就是

我們之前在vs2022里面的 是回車(chē)且換行

但是今天我們的這里的 和在這個(gè)不是一個(gè)概念

其實(shí)回車(chē)換行其實(shí)是兩個(gè)動(dòng)作的

行緩沖區(qū)

我們第一個(gè)進(jìn)行編譯的時(shí)候我們加上 ,然后sleep兩秒

我們編譯運(yùn)行可以發(fā)現(xiàn)我們的打印內(nèi)容先出來(lái)然后進(jìn)行等待兩秒

但是我們將這個(gè) 去掉的話(huà),我們發(fā)現(xiàn)編譯的時(shí)候是等到了兩秒,這個(gè)打印的內(nèi)容才出來(lái)的

深度解析如何在Linux中創(chuàng)建自己的第一個(gè)系統(tǒng)程序—進(jìn)度條

我們帶 的話(huà)就是數(shù)據(jù)立即顯示

那么我們?nèi)绻粠?的話(huà)我們先執(zhí)行printf還是sleep呢?

我們c語(yǔ)言一定是從上到下進(jìn)行執(zhí)行的

那么我們這里也是先執(zhí)行printf也是執(zhí)行sleep的

那么我們打印的數(shù)據(jù)怎么沒(méi)看見(jiàn)呢?

那么我們這時(shí)候的數(shù)據(jù)肯定是存在緩沖區(qū)里面的

等休眠時(shí)間結(jié)束了,我們就將我們打印的顯示出來(lái)

只要有緩沖區(qū)的話(huà)

那么一定存在這個(gè)刷新策略

顯示器的刷新策略:行刷新!

所以如果包含 的話(huà)立即打印到顯示器上

如果不包含的話(huà)改字符串不做刷新,要么程序要么結(jié)束自動(dòng)刷新,要么我們進(jìn)行強(qiáng)制刷新的操作

如果我們想讓不帶 的消息進(jìn)行刷新的話(huà)怎么辦呢?

我們可以使用命令fflush

深度解析如何在Linux中創(chuàng)建自己的第一個(gè)系統(tǒng)程序—進(jìn)度條

這個(gè)命令可以直接進(jìn)行強(qiáng)制刷新的操作

我們?cè)诖a中添加這個(gè)代碼就能立即進(jìn)行刷新的操作

代碼語(yǔ)言:JavaScript代碼運(yùn)行次數(shù):0運(yùn)行復(fù)制

#include <stdio.h>  2 #include<unistd.h>  3   4 int main()  5 {  6   printf("hello kaikai");  7   fflush(stdout);//利用這個(gè)文件流將我們的字符串立即進(jìn)行刷新的操作         8   sleep(2);                                                         9   return 0;                                                        10 }     </unistd.h></stdio.h>
深度解析如何在Linux中創(chuàng)建自己的第一個(gè)系統(tǒng)程序—進(jìn)度條

然后我們運(yùn)行程序我們可以發(fā)現(xiàn)字符串立即被打印出來(lái)了

我們現(xiàn)在對(duì)code.c進(jìn)行編輯

我們想讓結(jié)果在一行進(jìn)行顯示的操作

但是我們最后呈現(xiàn)出來(lái)的是很多行

深度解析如何在Linux中創(chuàng)建自己的第一個(gè)系統(tǒng)程序—進(jìn)度條
深度解析如何在Linux中創(chuàng)建自己的第一個(gè)系統(tǒng)程序—進(jìn)度條

那么怎么樣讓我們的光標(biāo)在寫(xiě)完之后重新回到那一行呢?

我們可以將原來(lái)的 換成我們的 就行了

的作用是在輸出完畢之后光標(biāo)能夠回到最開(kāi)始的位置

深度解析如何在Linux中創(chuàng)建自己的第一個(gè)系統(tǒng)程序—進(jìn)度條

但是我們又發(fā)現(xiàn)這個(gè)什么都不打印

深度解析如何在Linux中創(chuàng)建自己的第一個(gè)系統(tǒng)程序—進(jìn)度條

因?yàn)槲覀冞@里后面不是 了,不會(huì)進(jìn)行刷新操作的,我們打印的結(jié)果都是顯示在緩沖區(qū)里面的

那么我們就進(jìn)行主動(dòng)刷新的操作

我們?cè)诖a的后面加上fflush(stdout);就行了

輸出后我們立即進(jìn)行刷新,將我們的數(shù)字顯示出來(lái)

但是我們發(fā)現(xiàn)我們的數(shù)字一打印完就會(huì)消失了,光標(biāo)一直回到開(kāi)頭

最后被命令行覆蓋了

深度解析如何在Linux中創(chuàng)建自己的第一個(gè)系統(tǒng)程序—進(jìn)度條
深度解析如何在Linux中創(chuàng)建自己的第一個(gè)系統(tǒng)程序—進(jìn)度條

我們可以在代碼的最后加上這個(gè) 進(jìn)行換行的操作

那么這里我們就完成了一個(gè)倒計(jì)時(shí)的裝置了

代碼語(yǔ)言:javascript代碼運(yùn)行次數(shù):0運(yùn)行復(fù)制

#include <stdio.h>  2 #include<unistd.h>  3   4 int main()  5 {  6   int cnt=9;  7   while(cnt&gt;=0)  8   {  9     printf("%d ",cnt); 10     fflush(stdout);//利用這個(gè)文件流將我們的字符串立即進(jìn)行刷新的操作 11     cnt--; 12     sleep(1); 13   } 14   printf(" ");                                                          15 //  printf("hello kaikai"); 16 //  fflush(stdout);//利用這個(gè)文件流將我們的字符串立即進(jìn)行刷新的操作 17 //  sleep(2); 18   return 0; 19 }~     </unistd.h></stdio.h>
深度解析如何在Linux中創(chuàng)建自己的第一個(gè)系統(tǒng)程序—進(jìn)度條

最終效果就是到了0我們就直接進(jìn)行了換行的操作了

深度解析如何在Linux中創(chuàng)建自己的第一個(gè)系統(tǒng)程序—進(jìn)度條

但是我們又發(fā)現(xiàn)我們將這個(gè)cnt初始化為10的話(huà)我們最后打印的就是這樣的

會(huì)在后面帶上一個(gè)0,這是為什么呢?

深度解析如何在Linux中創(chuàng)建自己的第一個(gè)系統(tǒng)程序—進(jìn)度條

其實(shí)顯示器只認(rèn)字符的

我們?cè)诖蛴〉钠鋵?shí)是以字符為單位進(jìn)行打印的操作

我們第一個(gè)答應(yīng)的是1和0兩個(gè)字符

那么第二次的時(shí)候我們的光標(biāo)回到第一個(gè)字符了

然后我們打印9

但是我們之前的字符0沒(méi)有刪除

所以顯示的就是90

80

70

60

等等

那么我們?cè)趺催M(jìn)行修改操作呢?

我們可以在我們的格式化那里進(jìn)行修改的操作的

我們改變成%2d就行了

深度解析如何在Linux中創(chuàng)建自己的第一個(gè)系統(tǒng)程序—進(jìn)度條

但是我們發(fā)現(xiàn)我們的這個(gè)空格打印的時(shí)候在左側(cè)的,我們想讓不足2位的空格在右邊

深度解析如何在Linux中創(chuàng)建自己的第一個(gè)系統(tǒng)程序—進(jìn)度條

那么我們?cè)趺崔k?

我們是可以使用%-2d進(jìn)行調(diào)整

因?yàn)槲覀兏袷交臅r(shí)候,,不足位置的時(shí)候默認(rèn)是右對(duì)齊的

那么我們加上-號(hào)就可以變成左對(duì)齊了

那么到這里我們就實(shí)現(xiàn)成功了

深度解析如何在Linux中創(chuàng)建自己的第一個(gè)系統(tǒng)程序—進(jìn)度條

進(jìn)度條實(shí)現(xiàn)

我們的Linux中的進(jìn)度條通常是這樣的

深度解析如何在Linux中創(chuàng)建自己的第一個(gè)系統(tǒng)程序—進(jìn)度條

隨著進(jìn)步不斷增加,我們括號(hào)中的#就會(huì)增加,右邊的數(shù)字也是顯示的進(jìn)度

然后右邊的斜杠就是我們的光標(biāo)移動(dòng)

我們這里聲明在.h文件中,實(shí)現(xiàn)在.c文件中,然后我們?cè)趍ain.c中進(jìn)行編譯操作

深度解析如何在Linux中創(chuàng)建自己的第一個(gè)系統(tǒng)程序—進(jìn)度條

我們將我們的Makefile文件拷貝到當(dāng)前的目錄中

使用命令cp ../Makefile .將上級(jí)目錄中的Makefile文件拷貝到當(dāng)前的文件中

那么這樣我們就成功了

深度解析如何在Linux中創(chuàng)建自己的第一個(gè)系統(tǒng)程序—進(jìn)度條

我們只需要將這個(gè)Makefile里面的BIN就是生成的可執(zhí)行文件的名稱(chēng)進(jìn)行改變下就行了,其他的不需要進(jìn)行變化

深度解析如何在Linux中創(chuàng)建自己的第一個(gè)系統(tǒng)程序—進(jìn)度條

我們?nèi)缓筮M(jìn)行正常的編譯操作,輸入命令make

深度解析如何在Linux中創(chuàng)建自己的第一個(gè)系統(tǒng)程序—進(jìn)度條

我們?cè)谶@里面引用了usleep的概念

下面的具體的使用方法

usleep 是一個(gè) C 語(yǔ)言中的函數(shù),定義在 頭文件中,用于讓程序暫停執(zhí)行一段時(shí)間(微秒級(jí)別)。它的作用是引入延時(shí),通常在需要控制程序執(zhí)行速度或等待某些事件的場(chǎng)景下使用。


函數(shù)原型:代碼語(yǔ)言:javascript代碼運(yùn)行次數(shù):0運(yùn)行復(fù)制

int usleep(useconds_t usec);

參數(shù): usec:延時(shí)的時(shí)間,以微秒(microseconds)為單位。1 秒 = 1,000,000 微秒。 返回值: 成功時(shí)返回 0。 如果出錯(cuò)(例如傳入了非法參數(shù)),則返回 -1 并設(shè)置 errno


使用場(chǎng)景:控制程序的執(zhí)行速度: 在循環(huán)中延時(shí)一定時(shí)間,避免程序執(zhí)行得過(guò)快。 常用于動(dòng)畫(huà)、進(jìn)度條、實(shí)時(shí)更新等。 等待硬件或外部事件:等待特定硬件響應(yīng),比如 GPIO 信號(hào)穩(wěn)定。減少 CPU 占用率:在多線(xiàn)程程序中,為線(xiàn)程設(shè)置短暫的休眠以釋放 CPU 資源。


示例:

以下是一個(gè)簡(jiǎn)單的例子,展示如何使用 usleep 實(shí)現(xiàn)動(dòng)態(tài)進(jìn)度條:

代碼語(yǔ)言:javascript代碼運(yùn)行次數(shù):0運(yùn)行復(fù)制

#include <stdio.h>#include <unistd.h> // 包含 usleep 函數(shù)int main() {    printf("Loading... ");    for (int i = 0; i <p>運(yùn)行效果: 程序每 50 毫秒更新一次,顯示動(dòng)態(tài)的進(jìn)度條效果。</p> <figure class=""><hr></figure>注意事項(xiàng):跨平臺(tái)兼容性: usleep 是 POSIX 標(biāo)準(zhǔn)的一部分,因此在 Windows 平臺(tái)上可能無(wú)法使用。如果需要跨平臺(tái)的延時(shí)功能,可以使用其他方法,比如:  Sleep 函數(shù)(Windows 特有,單位為毫秒)。  nanosleep(更精確的 POSIX 延時(shí)函數(shù))。  std::this_thread::sleep_for(C++11 標(biāo)準(zhǔn)庫(kù),適用于跨平臺(tái))。 延時(shí)的精度:usleep 的精度依賴(lài)于操作系統(tǒng)調(diào)度器。在某些情況下,實(shí)際延時(shí)可能比指定時(shí)間更長(zhǎng),尤其是在多任務(wù)系統(tǒng)中。不推薦使用(現(xiàn)代 POSIX):在 POSIX.1-2008 標(biāo)準(zhǔn)中,usleep 已被標(biāo)記為不推薦使用(deprecated),建議使用更精確的 nanosleep 或 clock_nanosleep。<figure class=""><hr></figure>替代方法(使用 nanosleep):代碼語(yǔ)言:javascript<i class="icon-code"></i>代碼運(yùn)行次數(shù):<!-- -->0<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewbox="0 0 16 16" fill="none"><path d="M6.66666 10.9999L10.6667 7.99992L6.66666 4.99992V10.9999ZM7.99999 1.33325C4.31999 1.33325 1.33333 4.31992 1.33333 7.99992C1.33333 11.6799 4.31999 14.6666 7.99999 14.6666C11.68 14.6666 14.6667 11.6799 14.6667 7.99992C14.6667 4.31992 11.68 1.33325 7.99999 1.33325ZM7.99999 13.3333C5.05999 13.3333 2.66666 10.9399 2.66666 7.99992C2.66666 5.05992 5.05999 2.66659 7.99999 2.66659C10.94 2.66659 13.3333 5.05992 13.3333 7.99992C13.3333 10.9399 10.94 13.3333 7.99999 13.3333Z" fill="currentcolor"></path></svg>運(yùn)行<svg width="16" height="16" viewbox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg"><path fill-rule="evenodd" clip-rule="evenodd" d="M4.5 15.5V3.5H14.5V15.5H4.5ZM12.5 5.5H6.5V13.5H12.5V5.5ZM9.5 2.5H3.5V12.5H1.5V0.5H11.5V2.5H9.5Z" fill="currentcolor"></path></svg>復(fù)制<pre class="prism-token token line-numbers javascript">#include <stdio.h>#include <time.h>int main() {    struct timespec ts;    ts.tv_sec = 0;         // 秒    ts.tv_nsec = 50000000; // 納秒(50 毫秒)    printf("Loading... ");    for (int i = 0; i <p>這提供了更高的精度和可靠性。</p> <p>那么到這里我們就能通過(guò)下面的代碼進(jìn)行進(jìn)度的顯示了</p>代碼語(yǔ)言:javascript<i class="icon-code"></i>代碼運(yùn)行次數(shù):<!-- -->0<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewbox="0 0 16 16" fill="none"><path d="M6.66666 10.9999L10.6667 7.99992L6.66666 4.99992V10.9999ZM7.99999 1.33325C4.31999 1.33325 1.33333 4.31992 1.33333 7.99992C1.33333 11.6799 4.31999 14.6666 7.99999 14.6666C11.68 14.6666 14.6667 11.6799 14.6667 7.99992C14.6667 4.31992 11.68 1.33325 7.99999 1.33325ZM7.99999 13.3333C5.05999 13.3333 2.66666 10.9399 2.66666 7.99992C2.66666 5.05992 5.05999 2.66659 7.99999 2.66659C10.94 2.66659 13.3333 5.05992 13.3333 7.99992C13.3333 10.9399 10.94 13.3333 7.99999 13.3333Z" fill="currentcolor"></path></svg>運(yùn)行<svg width="16" height="16" viewbox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg"><path fill-rule="evenodd" clip-rule="evenodd" d="M4.5 15.5V3.5H14.5V15.5H4.5ZM12.5 5.5H6.5V13.5H12.5V5.5ZM9.5 2.5H3.5V12.5H1.5V0.5H11.5V2.5H9.5Z" fill="currentcolor"></path></svg>復(fù)制<pre class="prism-token token line-numbers javascript"> #include"process.h"  2 #include<string.h>  3 #include<unistd.h>  4 #define SIZE 101   5 #define STYLE '#'  6 void process()  7 {  8   //v1版本展示進(jìn)度條的基本功能  9   int rate=0; 10   //定義一個(gè)緩沖區(qū) 11   char buffer[SIZE]; 12   memset(buffer,0,sizeof(buffer));//將我們的buffer初始化為0 13   while(rate<figure class=""><img src="https://img.php.cn/upload/article/001/503/042/174487237373236.jpg" alt="深度解析如何在Linux中創(chuàng)建自己的第一個(gè)系統(tǒng)程序---進(jìn)度條"></figure><figure class=""><img src="https://img.php.cn/upload/article/001/503/042/174487237486419.jpg" alt="深度解析如何在Linux中創(chuàng)建自己的第一個(gè)系統(tǒng)程序---進(jìn)度條"></figure><p> 但是我們這個(gè)進(jìn)度條的右側(cè)的中擴(kuò)號(hào)不是固定的,而是隨著#的增加而往右邊進(jìn)行移動(dòng)的</p> <p>所以我們必須預(yù)留出足夠大的空間來(lái)進(jìn)行#的填充操作</p> <p>所以這個(gè)右括號(hào)不應(yīng)該隨著進(jìn)度條的移動(dòng)而移動(dòng)</p> <p>我們將代碼改成這樣子,將位置預(yù)留出來(lái),然后加上-號(hào)向左對(duì)齊就行了</p> <figure class=""><img src="https://img.php.cn/upload/article/001/503/042/174487237431499.jpg" alt="深度解析如何在Linux中創(chuàng)建自己的第一個(gè)系統(tǒng)程序---進(jìn)度條"></figure><p> 那么最后我們代碼就完成了</p> <figure class=""><img src="https://img.php.cn/upload/article/001/503/042/174487237486530.jpg" alt="深度解析如何在Linux中創(chuàng)建自己的第一個(gè)系統(tǒng)程序---進(jìn)度條"></figure>代碼語(yǔ)言:javascript<i class="icon-code"></i>代碼運(yùn)行次數(shù):<!-- -->0<svg xmlns="http://www.w3.org/2000/svg" width="16"    style="max-width:90%" viewbox="0 0 16 16" fill="none"><path d="M6.66666 10.9999L10.6667 7.99992L6.66666 4.99992V10.9999ZM7.99999 1.33325C4.31999 1.33325 1.33333 4.31992 1.33333 7.99992C1.33333 11.6799 4.31999 14.6666 7.99999 14.6666C11.68 14.6666 14.6667 11.6799 14.6667 7.99992C14.6667 4.31992 11.68 1.33325 7.99999 1.33325ZM7.99999 13.3333C5.05999 13.3333 2.66666 10.9399 2.66666 7.99992C2.66666 5.05992 5.05999 2.66659 7.99999 2.66659C10.94 2.66659 13.3333 5.05992 13.3333 7.99992C13.3333 10.9399 10.94 13.3333 7.99999 13.3333Z" fill="currentcolor"></path></svg>運(yùn)行<svg width="16" height="16" viewbox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg"><path fill-rule="evenodd" clip-rule="evenodd" d="M4.5 15.5V3.5H14.5V15.5H4.5ZM12.5 5.5H6.5V13.5H12.5V5.5ZM9.5 2.5H3.5V12.5H1.5V0.5H11.5V2.5H9.5Z" fill="currentcolor"></path></svg>復(fù)制<pre class="prism-token token line-numbers javascript"> 1 #include"process.h"  2 #include<string.h>  3 #include<unistd.h>  4 #define SIZE 101   5 #define STYLE '#'  6 void process()  7 {  8   //v1版本展示進(jìn)度條的基本功能  9   int rate=0; 10   //定義一個(gè)緩沖區(qū) 11   char buffer[SIZE]; 12   memset(buffer,0,sizeof(buffer));//將我們的buffer初始化為0 13   const char*lable="|/-";                                                                                                                                                                    14   int len =strlen(lable); 15  16   while(rate<p>但是這個(gè)進(jìn)度條我們沒(méi)辦法直接進(jìn)行使用的操作</p> <p>我們正常的進(jìn)度條是隨著這個(gè)下載的量而使這個(gè)進(jìn)度條進(jìn)行增加</p> <p>而不是一次性將這個(gè)進(jìn)度條打完</p> <p>我們這個(gè)進(jìn)度條應(yīng)該是隨著我們的下載的數(shù)據(jù)量進(jìn)行推進(jìn)的</p> <p>最后的代碼就是這樣的</p> <p>main.c</p>代碼語(yǔ)言:javascript<i class="icon-code"></i>代碼運(yùn)行次數(shù):<!-- -->0<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewbox="0 0 16 16" fill="none"><path d="M6.66666 10.9999L10.6667 7.99992L6.66666 4.99992V10.9999ZM7.99999 1.33325C4.31999 1.33325 1.33333 4.31992 1.33333 7.99992C1.33333 11.6799 4.31999 14.6666 7.99999 14.6666C11.68 14.6666 14.6667 11.6799 14.6667 7.99992C14.6667 4.31992 11.68 1.33325 7.99999 1.33325ZM7.99999 13.3333C5.05999 13.3333 2.66666 10.9399 2.66666 7.99992C2.66666 5.05992 5.05999 2.66659 7.99999 2.66659C10.94 2.66659 13.3333 5.05992 13.3333 7.99992C13.3333 10.9399 10.94 13.3333 7.99999 13.3333Z" fill="currentcolor"></path></svg>運(yùn)行<svg width="16" height="16" viewbox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg"><path fill-rule="evenodd" clip-rule="evenodd" d="M4.5 15.5V3.5H14.5V15.5H4.5ZM12.5 5.5H6.5V13.5H12.5V5.5ZM9.5 2.5H3.5V12.5H1.5V0.5H11.5V2.5H9.5Z" fill="currentcolor"></path></svg>復(fù)制<pre class="prism-token token line-numbers javascript">#include"process.h"    2 #include<unistd.h>    3 #include<time.h>    4 #include<stdlib.h>    5 //定義一個(gè)函數(shù)指針類(lèi)型    6 typedef void (*call_t)(const char*,double,double);//定義了一個(gè)函數(shù)指針      的類(lèi)型    7     8 double total=1024.0;//一共要下載的總量    9 //double speed=1.0;//定義一個(gè)網(wǎng)速   10 double speed[]={1.0,0.5,1.2,0.01,0.02};//定義一個(gè)網(wǎng)速清單   11    12 //下載   13 //回調(diào)函數(shù)   14 void download(int total,call_t cb)   15 {   16   srand(time(NULL));   17   double current=0.0;   18   while(current=total) break;   23     //下載代碼   24     int random=rand()%5;   25     usleep(50000);   26    27     current+=speed[random];   28     if(current&gt;=total)                                                   29     {   30       current=total;   31     }   32   }//加上隨機(jī)數(shù)進(jìn)行動(dòng)態(tài)的調(diào)整操作33 }   34 void uploadload(int total,call_t cb)   35 {   36   srand(time(NULL));   37   double current=0.0;   38   while(current=total) break;   43     //下載代碼   44     int random=rand()%5;   45     usleep(50000);   46    47     current+=speed[random];   48     if(current&gt;=total)   49     {   50       current=total;   51     }   52   }//加上隨機(jī)數(shù)進(jìn)行動(dòng)態(tài)的調(diào)整操作   53 }   54 int main()E&gt; 55 {   56   download(1024.0,FlushProcess);   57   printf("download 1024.0MB done ");   58   download(512.0,FlushProcess);   59   printf("download 512.0MB done ");   60   download(334.0,FlushProcess);   61   printf("download 334.0MB done ");   62   //process();   63   download(64.0,FlushProcess);   64   printf("download 64.0MB done ");   65   return 0;   66  }</stdlib.h></time.h></unistd.h>

process.c

代碼語(yǔ)言:javascript代碼運(yùn)行次數(shù):0運(yùn)行復(fù)制

#include"process.h"  2 #include<string.h>  3 #include<unistd.h>  4 #define SIZE 101   5 #define STYLE '#'  6 //v2:根據(jù)進(jìn)度進(jìn)行動(dòng)態(tài)刷新一次我們的進(jìn)度條  7 void FlushProcess(const char*tips,double total,double current)  8 {  9   const char*lable="|/-"; 10   int len=strlen(lable); 11   static int index=0;//只要我們調(diào)用這整個(gè)函數(shù)的話(huà),那么我們這個(gè)光標(biāo)就能&gt;    進(jìn)行轉(zhuǎn)動(dòng)的操作了 12   char buffer[SIZE]; 13   memset(buffer,0,sizeof(buffer));//將我們的buffer初始化為0 14                                      15   //int num =(int)(current*100/total);//只要滿(mǎn)足到了1個(gè)#的話(huà)那么我們就進(jìn)    行數(shù)據(jù)的刷新 16   double rate = current*100.0/total; 17   int num=(int)rate;//我們的num直接通過(guò)我們的比率進(jìn)行獲得 18   int i=0;           19   for(;i<num buffer printf fflush index if void process int rate="0;" char memset const len="strlen(lable);" while>    我們的當(dāng)前行開(kāi)始輸出,rate%len就是最后顯示的下標(biāo)只可能是 0 1 2 3這四個(gè)數(shù)&gt;    ,可以使我們的四個(gè)字符一直進(jìn)行變化的操作 48     fflush(stdout);//將我們緩沖區(qū)的消息進(jìn)行刷新操作 49     buffer[rate]=STYLE; 50     rate++; 51     usleep(50000); 52   } 53   printf(" ");//讓我們左側(cè)的命令行新起一行 54 }</num></unistd.h></string.h>

process.h

代碼語(yǔ)言:javascript代碼運(yùn)行次數(shù):0運(yùn)行復(fù)制

#pragma once    2 #include<stdio.h>  3 //v1版本  4 void process();  5   6 //v2版本  7 //根據(jù)當(dāng)前的量以及總量進(jìn)行當(dāng)前進(jìn)度條的刷新操作  8 void FlushProcess(const char*tips,double total,double current); </stdio.h>

相關(guān)閱讀

主站蜘蛛池模板: 中文精品久久 | 羞羞视频在线观看网站 | 99精品电影| 中文字幕一二三区 | 一级片网址 | 成人国产精品视频 | 福利精品| 99福利视频 | 一级做a毛片| 久精品久久 | 国产精品1区 | 嫩草视频在线看 | 午夜免费观看 | 一区二区三区国产 | 欧美一区二区在线观看 | 日韩精品 电影一区 亚洲 | 一区二区在线不卡 | 亚洲精品大全 | 日本在线免费 | 粉嫩一区二区三区四区公司1 | 国产精品视频一二三区 | 日朝毛片| 99re在线视频观看 | www日本高清 | 欧美一级毛片久久99精品蜜桃 | 国产成人一区二区三区电影 | 欧美1页| 亚洲视频在线免费 | 国产免费一区二区三区 | 欧美极品在线观看 | 视频一区二区在线观看 | 在线观看中文字幕 | 久久机热| 国产精华一区 | 欧美一区二区久久 | www.婷婷 | 亚洲精品成人在线 | 看羞羞视频 | 国产免费一区二区 | 91视频正在播放 | 欧美精品中文字幕久久二区 |