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

『Linux小程序』進(jìn)度條

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

緩沖區(qū)問(wèn)題

假設(shè)有一段代碼為:

#include<iostream>                                  
#include<unistd.h>                                                       
 int main()                              
 {                                                  
                                              
   std::cout<<"it's a file for Proc"<<std::endl;
  sleep(3);
  return 0;
 }         

編譯后運(yùn)行為正常,先打印后等待三秒結(jié)束程序;
『Linux小程序』進(jìn)度條,Linux,linux,小程序,運(yùn)維
但若是將其中的換行endl刪除再次編譯運(yùn)行將會(huì)一樣嗎;

『Linux小程序』進(jìn)度條,Linux,linux,小程序,運(yùn)維

? 答案為否 為什么不是先打印后sleep而是先sleep后打印呢 這里存在一個(gè)緩沖區(qū)問(wèn)題
毋庸置疑的是,該處執(zhí)行的順序一定是先打印后sleep

? 在這里確實(shí)是先進(jìn)行打印而后再執(zhí)行sleep,但是這里執(zhí)行打印后并沒(méi)有將信息顯示出來(lái);

? 在c/C++中存在一個(gè)輸出緩沖區(qū)(c/C++所提供的一段內(nèi)存空間);

? 這個(gè)輸出緩沖區(qū)并并不是馬上進(jìn)行刷新,而是根據(jù)特定的刷新策略來(lái)進(jìn)行刷新;

對(duì)于一般的顯示器設(shè)備,一般的刷新策略即為遇到換行時(shí),就把換行前的所有字符全部進(jìn)行顯示
若是想直接進(jìn)行刷新則可以調(diào)用

fflush(stdout);

進(jìn)行刷新;

『Linux小程序』進(jìn)度條,Linux,linux,小程序,運(yùn)維
? 從該處可以看出,在程序遇到fflush(stdout)時(shí)馬上進(jìn)行了刷新;

? 該函數(shù)即為立馬刷新輸出緩沖區(qū);

? 對(duì)于輸出緩沖區(qū)來(lái)說(shuō)一般是不會(huì)造成溢出的,當(dāng)輸出緩沖區(qū)到達(dá)一定的量時(shí)將會(huì)強(qiáng)制進(jìn)行刷新,并將新數(shù)據(jù)寫入進(jìn)輸出緩沖區(qū);
? 同時(shí),對(duì)于打印等函數(shù)來(lái)說(shuō)并不是直接將內(nèi)容直接打印到顯示器上,而是通過(guò)打印函數(shù)暫時(shí)存儲(chǔ)到了輸出緩沖區(qū)中;

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

在c/C++中,尤其是在c語(yǔ)言中,大多數(shù)人習(xí)慣使用’\n’進(jìn)行換行;

但是其實(shí)來(lái)說(shuō),換行與回車是有區(qū)別的,對(duì)于換行來(lái)說(shuō),單換行并不能使光標(biāo)回到最開始的位置;

『Linux小程序』進(jìn)度條,Linux,linux,小程序,運(yùn)維
而對(duì)于回車來(lái)說(shuō),回車的真正意義為歸位,即將光標(biāo)恢復(fù)到最開始的位置;

『Linux小程序』進(jìn)度條,Linux,linux,小程序,運(yùn)維
然而在大部分場(chǎng)景中,鍵盤中的回車鍵都會(huì)被默認(rèn)為換行+回車;

即為換行后再將光標(biāo)恢復(fù)到首位;

在c/c++中也是如此,‘\n’將會(huì)默認(rèn)為 換行+回車 ,即’\n’ + ‘\r’ ;

從該處可以進(jìn)行一個(gè)實(shí)驗(yàn);

#include<iostream>  
#include<unistd.h>  
 int main()  
 {  
   int count = 5;  
   while(count>=0){  
     std::cout<<"當(dāng)前剩余:"<<count<<std::endl;                           
     sleep(1);                             
     --count;                              
   }                                       
                                           
   return 0;                               
 }                   

運(yùn)行后:『Linux小程序』進(jìn)度條,Linux,linux,小程序,運(yùn)維


每次都會(huì)打印數(shù)據(jù)并進(jìn)行換行回車,因?yàn)檫@里使用了endl,其功能與’\n’相同;

而若是將cout換成’\r’將會(huì)是什么情況?

當(dāng)講cout換成 ‘\r’ 時(shí)則什么都不會(huì)打印;
原因即為;
'\r’只是純回車,并不是換行,而緩沖區(qū)當(dāng)遇到換行時(shí)才會(huì)進(jìn)行刷新;

若是在此處加上fflush(stdout)將會(huì)進(jìn)行每次回車的功能;

『Linux小程序』進(jìn)度條,Linux,linux,小程序,運(yùn)維

這次并不會(huì)每次都進(jìn)行換行,而是每次進(jìn)行回車,同時(shí)內(nèi)容也將重新覆蓋,從而得到一個(gè)類似于倒計(jì)時(shí)的功能;

進(jìn)度條小程序

根據(jù)上述的所有內(nèi)容可以制作一個(gè)進(jìn)度條,即主要結(jié)合 ‘\r’ 回車來(lái)進(jìn)行操作;

#include<iostream>
 #include<unistd.h>
 #define NUM 51
  int main()
 {
  char s[NUM];
   int count = 0;
  std::string C("|/-\\");
   while(count <  NUM){
 
     printf("[%-50s][%-4d%%][%c]\r",s,count*2,C[count%4]);

     fflush(stdout);
     s[count++] = '=';
     s[count+1] = '\0';  
     usleep(100000);
   }
     std::cout<<std::endl;
   return 0;
 }

『Linux小程序』進(jìn)度條,Linux,linux,小程序,運(yùn)維文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-725416.html

到了這里,關(guān)于『Linux小程序』進(jìn)度條的文章就介紹完了。如果您還想了解更多內(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 小程序-進(jìn)度條

    Linux 小程序-進(jìn)度條

    ? ? ? ? 1.回車換行 ? ? ? ? ? ? ? ? 回車換行是兩個(gè)動(dòng)作; ? ? ? ? ? ? ? ? 回車是將光標(biāo)移至當(dāng)前行的最左側(cè), ? ? ? ? ? ? ? ? 換行是將當(dāng)前光標(biāo)位置移至下一行的相同位置。 ? ? ? ? 2.緩沖區(qū) ? ? ? ? ? ? ? ? 由c語(yǔ)言維護(hù)的一段內(nèi)存? ? ? ? ? ? ? ? ? 1.stdout:標(biāo)

    2024年02月10日
    瀏覽(21)
  • 【Linux系統(tǒng)編程】Linux第一個(gè)小程序——進(jìn)度條

    【Linux系統(tǒng)編程】Linux第一個(gè)小程序——進(jìn)度條

    這篇文章我們一起來(lái)完成我們Linux中的第一個(gè)小程序——進(jìn)度條 在C語(yǔ)言中,字符可以分為可顯字符(printable characters)和控制字符(control characters)。 可顯字符是指可以在屏幕或打印輸出上顯示的字符,它們包括數(shù)字、字母、標(biāo)點(diǎn)符號(hào)、符號(hào)等。可顯字符可以直接被用戶看到

    2024年02月16日
    瀏覽(23)
  • Linux新手小程序——進(jìn)度條

    Linux新手小程序——進(jìn)度條

    目錄 前言 需要先了解????????1. r 和 n ? ? ? ? ? ? ? ? ? ????????2. 緩沖區(qū) ? ? ? ? 學(xué)習(xí)c語(yǔ)言時(shí),我們可以粗略把字符分為 可顯字符 和 控制字符 . ? ? ? ? 在按回車換到下一行開始的操作時(shí),實(shí)際上是進(jìn)行了兩個(gè)操作: 1. 讓光標(biāo)跳到下一行(只是垂直向下,這

    2024年02月15日
    瀏覽(19)
  • Linux小程序之進(jìn)度條

    Linux小程序之進(jìn)度條

    ? 作者簡(jiǎn)介:?舊言~,目前大二,現(xiàn)在學(xué)習(xí)Java,c,c++,Python等 座右銘:松樹千年終是朽,槿花一日自為榮。 目標(biāo):自己能實(shí)現(xiàn)進(jìn)度條 毒雞湯: 望小伙伴們點(diǎn)贊??收藏?加關(guān)注喲????? ????????咱們學(xué)習(xí)這么久的指令,一句話來(lái)概括,都忘光咯,學(xué)個(gè)錘錘??????,

    2024年02月05日
    瀏覽(12)
  • Linux進(jìn)度條小程序

    Linux進(jìn)度條小程序

    在學(xué)習(xí)C語(yǔ)言的時(shí)候,我們輸出的時(shí)候,通常會(huì)使用 n ,進(jìn)行換行輸出。其實(shí)這的所謂的 換行 ,包含了2個(gè)操作: 回車、換行 。 回車的本意是將光標(biāo)回車到當(dāng)前行的最前面,在C語(yǔ)言中 r 表示回車。 這就是回車的現(xiàn)象,這里按理說(shuō)最后應(yīng)該會(huì)輸出到0停止,然后將0顯式到終端

    2024年02月13日
    瀏覽(15)
  • 【LInux】簡(jiǎn)單進(jìn)度條程序的編寫

    【LInux】簡(jiǎn)單進(jìn)度條程序的編寫

    在進(jìn)行進(jìn)度條的程序的編寫之前,還有幾個(gè)問(wèn)題需要解決。 第一個(gè)問(wèn)題,先來(lái)看兩段代碼: 對(duì)比上面兩段代碼只有一個(gè) n 的區(qū)別。 左邊的代碼很簡(jiǎn)單,就是先打印,然后停頓 3 秒,程序退出。 主要問(wèn)題是,右邊的代碼,也實(shí)先打印,然后停頓 3 秒,程序退出嗎? 答案顯然

    2024年02月12日
    瀏覽(17)
  • 【Linux】第一個(gè)小程序--進(jìn)度條

    【Linux】第一個(gè)小程序--進(jìn)度條

    這篇博客要綜合利用以前的知識(shí),來(lái)實(shí)現(xiàn)一個(gè)進(jìn)度條程序~ 目錄 換行回車 緩沖區(qū) 實(shí)現(xiàn)簡(jiǎn)單的倒計(jì)時(shí) 實(shí)現(xiàn)進(jìn)度條 version1 version2 ? 在開始寫這個(gè)小程序之前,我們先學(xué)習(xí)一些預(yù)備知識(shí): ?在我們運(yùn)行這個(gè)程序時(shí),并沒(méi)有直接打印出“hello bit,hello world...”,而是當(dāng)程序運(yùn)行結(jié)束后

    2024年03月10日
    瀏覽(22)
  • 【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】-第一個(gè)小程序(進(jìn)度條)

    【Linux】-第一個(gè)小程序(進(jìn)度條)

    ??作者:小樹苗渴望變成參天大樹 ??作者宣言:認(rèn)真寫好每一篇博客 ??作者gitee:gitee ??作者專欄:C語(yǔ)言,數(shù)據(jù)結(jié)構(gòu)初階,Linux,C++ 動(dòng)態(tài)規(guī)劃算法 如 果 你 喜 歡 作 者 的 文 章 ,就 給 作 者 點(diǎn) 點(diǎn) 關(guān) 注 吧! 大家好久不見,已經(jīng)快一個(gè)月沒(méi)有更新Linux相關(guān)的知識(shí)了,希望大家

    2024年02月12日
    瀏覽(18)
  • Linux第一個(gè)小程序進(jìn)度條

    Linux第一個(gè)小程序進(jìn)度條

    ? 在寫進(jìn)度條程序之前我們需要介紹一下緩沖區(qū),緩沖區(qū)有兩種,輸入和輸出緩沖區(qū),這里主要介紹輸出緩沖區(qū)。在我們用C語(yǔ)言寫代碼時(shí),輸出一些信息,實(shí)際上是先輸出到輸出緩沖區(qū)里,然后才輸出到我們的顯示器上。 原因是: 如果輸出一個(gè)字符就打印到顯示器上,那么

    2024年02月05日
    瀏覽(19)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

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

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包