国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

【Linux】進(jìn)度條小程序の深度解剖(7)

這篇具有很好參考價(jià)值的文章主要介紹了【Linux】進(jìn)度條小程序の深度解剖(7)。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

?????【Linux】進(jìn)度條小程序の深度解剖(7),YY滴 《Linux系列》,linux,vim,運(yùn)維
?

前言

大家好吖,歡迎來(lái)到 YY 滴 Linux系列 ,熱烈歡迎! 本章主要內(nèi)容面向接觸過(guò)Linux的老鐵,主要內(nèi)容含
【Linux】進(jìn)度條小程序の深度解剖(7),YY滴 《Linux系列》,linux,vim,運(yùn)維

歡迎訂閱 YY滴Linux專欄!更多干貨持續(xù)更新!以下是傳送門!

訂閱專欄閱讀: YY的《Linux》系列 ?????
【Linux】Linux環(huán)境搭建(新手指南,購(gòu)買,登錄)(1)
【Linux】Linux基本指令大全-[詳解](2)
【Linux】Linuxの權(quán)限與權(quán)限基本問(wèn)題-[詳解](3)
【Linux】基礎(chǔ)開發(fā)工具—[yum]&[vim]詳解(4)
【Linux】gcc&g++與 [ 動(dòng)靜態(tài)庫(kù) ] 的美妙邂逅(5)
【Linux】自動(dòng)化構(gòu)建工具-make/Makefile詳解(6)
【Linux】進(jìn)度條小程序の深度解剖(7)
【Linux】從軟硬件角度重新理解 [ 操作系統(tǒng)與馮諾依曼體系 ](8)
【Linux】程序員一定要了解的計(jì)算機(jī)管理理念——描述與組織(9)
【Linux】操作系統(tǒng)管理的算珠——進(jìn)程の詳解(10)

歡迎訂閱 YY滴C++專欄!更多干貨持續(xù)更新!以下是傳送門!

  • YY的《C++》專欄
  • YY的《C++11》專欄
  • YY的《Linux》專欄
  • YY的《數(shù)據(jù)結(jié)構(gòu)》專欄
  • YY的《C語(yǔ)言基礎(chǔ)》專欄
  • YY的《初學(xué)者易錯(cuò)點(diǎn)》專欄
  • YY的《小小知識(shí)點(diǎn)》專欄

一.在Linux中的設(shè)置

  • 用vim分別建立【main.c】【makefile】【processbar】【processBar.c】【processbar.h】,可視具體情況設(shè)置,文末有簡(jiǎn)略代碼;
  • makefile文件如圖所示
    【Linux】進(jìn)度條小程序の深度解剖(7),YY滴 《Linux系列》,linux,vim,運(yùn)維> - ./processbar 執(zhí)行程序

細(xì)節(jié):為什么在makefile中不用包含頭文件?

  • 頭文件就在源代碼的當(dāng)前目錄下,編譯器會(huì)自動(dòng)去找到頭文件

二.必備概念梳理

1.回車與換行的區(qū)別

  • 回車:光標(biāo)回到當(dāng)前行的左端
  • 換行:跳轉(zhuǎn)到當(dāng)前的下一行
  • PS:現(xiàn)在我們鍵盤上的ENTER同時(shí)兼?zhèn)淞嘶剀嚭蛽Q行的功能
  • 在C語(yǔ)言中"\n"表示回車加換行,"\r"單單指的是回車;

2.緩沖區(qū)概念

引入: 緩沖區(qū)是C語(yǔ)言維護(hù)的一段內(nèi)存

  • C語(yǔ)言會(huì)默認(rèn)打開三個(gè)輸入輸出的文件,分別是標(biāo)準(zhǔn)輸入流stdin,標(biāo)準(zhǔn)輸出流stdout,標(biāo)準(zhǔn)錯(cuò)誤stderr

  • 在進(jìn)度條小程序中,我們要特別注意標(biāo)準(zhǔn)輸出流stdout
    【Linux】進(jìn)度條小程序の深度解剖(7),YY滴 《Linux系列》,linux,vim,運(yùn)維

一.“\n”和“\r”在緩沖區(qū)中的作用效果差別

  • 眾所周知,在Linux中,顯示器可以被當(dāng)作一個(gè)文件;
  • 而且顯示器默認(rèn)是行刷新,也就是當(dāng)輸出內(nèi)容配上“\n”后會(huì)直接回車+換行并立刻將內(nèi)容打印在屏幕上,待睡眠結(jié)束后,才會(huì)彈出操作框;
  • 而當(dāng)輸出內(nèi)容配上“\r”后,其會(huì)先輸出到緩沖區(qū)中,待睡眠結(jié)束后才會(huì)和操作框一起輸出;
#include <stdio.h>
int main()
{
 printf("hello Makefile!\n");先行打印,待睡眠結(jié)束后才彈出操作框
 sleep(3);
 return 0;
 
 printf("hello Makefile!\r");待睡眠結(jié)束后才會(huì)和操作框一起打印
}

二.fflush函數(shù)

  • fflush是一個(gè)在C語(yǔ)言標(biāo)準(zhǔn)輸入輸出庫(kù)中的函數(shù),功能是沖洗流中的信息,該函數(shù)通常用于處理磁盤文件。fflush()會(huì)強(qiáng)迫將緩沖區(qū)內(nèi)的數(shù)據(jù)寫回參數(shù)stream 指定的文件中。
  • 在下面代碼塊中,"hello Makefile!"本來(lái)應(yīng)該待睡眠結(jié)束后才會(huì)和操作框一起彈出,在此之前存儲(chǔ)在緩沖區(qū)中;但我們用了fflush(stdout);(stdout是其數(shù)據(jù)類型),直接將內(nèi)容從緩沖區(qū)中寫回顯示器文件中;
  • 最終完成的效果是:先行打印,待睡眠結(jié)束后才彈出操作框
#include <stdio.h>
int main()
{
 printf("hello Makefile!\r");
 fflush(stdout);
 sleep(3);
 return 0;
}

三.fflush函數(shù)的應(yīng)用:倒計(jì)時(shí)功能

1.倒計(jì)時(shí)功能的實(shí)現(xiàn)原理
  • 利用不斷的回車刷新實(shí)現(xiàn)
2.數(shù)據(jù)類型的表示細(xì)節(jié)
  • 顯示2位數(shù)的數(shù)字 printf(“%2d\r”,cnt);
  • 此時(shí)功能正常【10,9,8…1,0】
  • 左對(duì)齊 printf(“%-2d\r”,cnt);
3.倒計(jì)時(shí)功能完整代碼
#include <stdio.h>
#include <unistd.h>
int main()
{
  int cnt=10;倒計(jì)時(shí)功能
  while(cnt>=0)
  {
    printf("%d\r",cnt);              此時(shí)屏幕出現(xiàn)【1090,80...10,00】,功能異常;
    fflush(stdout);
    cut--;
    sleep(1);
  }
  return 0;
}

三.設(shè)計(jì)進(jìn)度條的各個(gè)部分

1.設(shè)計(jì)進(jìn)度條主體部分

1.打印時(shí)為進(jìn)度條預(yù)留空間
  • 設(shè)計(jì)一個(gè)字符數(shù)組,并初始化;此時(shí)其為一個(gè)空串;
memset(bar, 0 ,sizeof(bar));
2.調(diào)整進(jìn)度條主體加載方向
  • 在Linux環(huán)境下, 行默認(rèn)是右對(duì)齊;所以隨著不斷的回車與換行,進(jìn)度條呈現(xiàn)出來(lái)的效果是自右向左移動(dòng);
  • 我們只需要改為 [%-100s] 即可
 printf("[%-100s]\r", bar);
3.進(jìn)度條主體部分代碼
#include <unistd.h>
int main()
{
  int i = 0;
  
  char bar[102];
  memset(bar, 0 ,sizeof(bar));
  
  while(i <= 100 )
 {
   printf("[%-100s]\r", bar);
   fflush(stdout);
   bar[i++] = '#';
   usleep(10000);
 }
}

2.設(shè)計(jì)百分號(hào)進(jìn)度部分

一.設(shè)計(jì)細(xì)節(jié):“%如何表示”
  • 細(xì)節(jié):由于【 % +''字母為 數(shù)據(jù)類型】,斜杠【%】用【%%】表示
二.實(shí)現(xiàn)原理
  • while循環(huán)
int main()
{
 int i = 0;
 while(i <= 100 )
 {
 printf("[%d%%]",i);
 fflush(stdout);
 }
 return 0;
}

3.設(shè)計(jì)旋轉(zhuǎn)光標(biāo)部分

一.設(shè)計(jì)細(xì)節(jié):“\ 如何表示”
  • 細(xì)節(jié):由于【 \ +''為 轉(zhuǎn)義字符】,斜杠【\】用【\\】表示
二.實(shí)現(xiàn)原理
  • 常量字符串配合上【 i++% 4】
  • 【 -r 回車】 +【 fflush刷新圖標(biāo)】; 下一輪while循環(huán),直接覆蓋原來(lái)的字符,實(shí)現(xiàn)光標(biāo)轉(zhuǎn)動(dòng);
int main()
{
  int i = 0;
  const char *lable="|/-\\";
  while(i <= 100 )
  {
    printf("[%c]\r",lable[i++%4]);
    fflush(stdout);
  }
}

四.進(jìn)度條完整代碼

#include <unistd.h>
#include <string.h>
int main()
{
  int i = 0;
  char bar[102];
  memset(bar, 0 ,sizeof(bar));
  const char *lable="|/-\\";
  while(i <= 100 )
 {
   printf("[%-100s][%d%%][%c]\r", bar, i, lable[i%4]);
   fflush(stdout);
   bar[i++] = '#';
   usleep(10000);
 }
  printf("\n");
  return 0;
}

?文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-740274.html

到了這里,關(guān)于【Linux】進(jìn)度條小程序の深度解剖(7)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 【Linux】實(shí)現(xiàn)進(jìn)度條小程序

    【Linux】實(shí)現(xiàn)進(jìn)度條小程序

    個(gè)人主頁(yè) : zxctscl 如有轉(zhuǎn)載請(qǐng)先通知 在之前已經(jīng)了解了 【Linux】vim的使用和 【Linux】編譯器-gcc/g++使用還有 【Linux】自動(dòng)化構(gòu)建工具-make/Makefile,有了這些工具,這次來(lái)實(shí)現(xiàn)一個(gè)進(jìn)度條小程序。 換行:是換到新的一行。 回車:是回到最開始。 舉個(gè)例子:在格子里面寫字的時(shí)

    2024年03月22日
    瀏覽(23)
  • 【Linux旅行記】進(jìn)度條小程序

    【Linux旅行記】進(jìn)度條小程序

    最近,我發(fā)現(xiàn)了一個(gè)超級(jí)強(qiáng)大的人工智能學(xué)習(xí)網(wǎng)站。它以通俗易懂的方式呈現(xiàn)復(fù)雜的概念,而且內(nèi)容風(fēng)趣幽默。我覺(jué)得它對(duì)大家可能會(huì)有所幫助,所以我在此分享。點(diǎn)擊這里跳轉(zhuǎn)到網(wǎng)站。 ??博客主頁(yè):小智_x0___0x_ ??歡迎關(guān)注:??點(diǎn)贊??收藏??留言 ??系列專欄:Linux入門

    2024年02月14日
    瀏覽(21)
  • 『Linux升級(jí)路』進(jìn)度條小程序

    『Linux升級(jí)路』進(jìn)度條小程序

    ?? 博客主頁(yè): 小王又困了 ?? 系列專欄: Linux ?? 人之為學(xué),不日近則日退 ?? 感謝大家點(diǎn)贊??收藏?評(píng)論?? 目錄 一、預(yù)備知識(shí) ??1.1緩沖區(qū) ??1.2回車和換行 二、倒計(jì)時(shí) ??2.1源代碼 ??2.2注意事項(xiàng) 三、進(jìn)度條 ??3.1源代碼 ??3.2實(shí)際應(yīng)用 我們先觀察兩段代碼的現(xiàn)象

    2024年02月05日
    瀏覽(23)
  • 【Linux取經(jīng)路】進(jìn)度條小程序
  • 【Linux】make/Makefile & 進(jìn)度條小程序

    【Linux】make/Makefile & 進(jìn)度條小程序

    目錄 一,認(rèn)識(shí) make/makefile 二,實(shí)例代碼 1,依賴關(guān)系 2,原理 3,項(xiàng)目清理 4,測(cè)試講解 三,Linux第一個(gè)小程序-進(jìn)度條 game.h game.c test.c 程序詳解 ? 會(huì)不會(huì)寫makefile,從一個(gè)側(cè)面說(shuō)明了一個(gè)人是否具備完成大型工程的能力 一個(gè)工程中的源文件不計(jì)數(shù),其按類型、功能、模塊分

    2024年02月05日
    瀏覽(23)
  • 【Linux】從0到1實(shí)現(xiàn)一個(gè)進(jìn)度條小程序

    【Linux】從0到1實(shí)現(xiàn)一個(gè)進(jìn)度條小程序

    個(gè)人主頁(yè):??在肯德基吃麻辣燙 我的gitee:gitee倉(cāng)庫(kù) 分享一句喜歡的話:熱烈的火焰,冰封在最沉默的火山深處 進(jìn)度條實(shí)現(xiàn): 本文講解如何從0到1實(shí)現(xiàn)一個(gè)進(jìn)度條小程序。 我們?cè)趯懽魑牡臅r(shí)候,寫到了一行的結(jié)尾,就得另起一行并到開頭繼續(xù)寫。 其中,這個(gè)另起一行的動(dòng)作

    2024年02月14日
    瀏覽(27)
  • [Linux]手把手教你制作進(jìn)度條小程序

    [Linux]手把手教你制作進(jìn)度條小程序

    C語(yǔ)言中字符分為兩種: 可顯字符 控制字符 其中可顯字符就是字符a這類的字符,控制字符就是n這種控制字符。 對(duì)于我們制作進(jìn)度條,我們只需要關(guān)注兩個(gè)控制字符: r – 進(jìn)行回車操作 n – 進(jìn)行換行加回車操作 說(shuō)明: n本身是換行字符,但是C語(yǔ)言本身將其解析成了換行加回

    2024年02月14日
    瀏覽(27)
  • Linux實(shí)現(xiàn)進(jìn)度條小程序(包含基礎(chǔ)版本和模擬下載過(guò)程版本)

    Linux實(shí)現(xiàn)進(jìn)度條小程序(包含基礎(chǔ)版本和模擬下載過(guò)程版本)

    usleep這個(gè)函數(shù)的參數(shù)是微秒數(shù),作用是讓程序休眠對(duì)應(yīng)的微秒數(shù) 1秒=1000毫秒 1毫秒=1000微秒 1微妙=1000納秒 等等等等 因此下面的代碼中的 usleep(1000000)=1秒 1.緩沖區(qū) 1.緩沖區(qū)概念的引出 首先,先讓大家看兩份代碼,分析一下為什么出現(xiàn)這種情況? 請(qǐng)注意:這個(gè)代碼的運(yùn)行情況是:先打印

    2024年02月05日
    瀏覽(25)
  • 【Linux從入門到精通】C語(yǔ)言模擬實(shí)現(xiàn)進(jìn)度條小程序

    【Linux從入門到精通】C語(yǔ)言模擬實(shí)現(xiàn)進(jìn)度條小程序

    ? ? 在Linux下,我們安裝軟件時(shí)會(huì)經(jīng)??吹竭M(jìn)度條,來(lái)告知我們安裝的進(jìn)度。我們不妨自己模擬實(shí)現(xiàn)一個(gè)進(jìn)度條,看看其中的細(xì)節(jié)。模擬實(shí)現(xiàn)進(jìn)度條并不困難,但其中的細(xì)節(jié)我們又不可忽視。 本篇文章會(huì)對(duì)模擬實(shí)現(xiàn)進(jìn)度條進(jìn)行詳解 。 文章目錄 一、進(jìn)度條整體模板 二、輸出緩

    2024年02月03日
    瀏覽(18)
  • 手把手教你如何在Linux下寫進(jìn)度條小程序(附源碼)

    手把手教你如何在Linux下寫進(jìn)度條小程序(附源碼)

    錄屏2023 進(jìn)入ProgressBar這個(gè)目錄之后,使用ls命令查看是否創(chuàng)建成功 編寫makefile文件是為了,使用make命令構(gòu)建我們的.c文件,生成可執(zhí)行程序 把源碼復(fù)制粘貼到我們對(duì)應(yīng)的文件中 使用vim指令先打開頭文件 按小寫i,進(jìn)入插入模式(Insert),直接拷貝上去 再按esc,直接輸入:wq(

    2024年02月04日
    瀏覽(27)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包