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

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

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

目錄

1.知識(shí)補(bǔ)充

1.1回車和換行?

1.2緩沖區(qū)

2.實(shí)現(xiàn)倒計(jì)時(shí)?

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


1.知識(shí)補(bǔ)充

1.在制作小程序進(jìn)度條之前,我們先了解一下,回車換行和行緩沖區(qū)的概念。

2.動(dòng)態(tài)效果,在同一個(gè)位置刷新不同的圖像,實(shí)現(xiàn)一個(gè)倒計(jì)時(shí)的效果。

3.有了上面的基礎(chǔ)我們就可以實(shí)現(xiàn)進(jìn)度條了


1.1回車和換行?

Linux小程序--進(jìn)度條,Linux學(xué)習(xí),linux,運(yùn)維,服務(wù)器

所以說回車和換行是兩個(gè)動(dòng)作。

Linux小程序--進(jìn)度條,Linux學(xué)習(xí),linux,運(yùn)維,服務(wù)器Linux小程序--進(jìn)度條,Linux學(xué)習(xí),linux,運(yùn)維,服務(wù)器

這是老式鍵盤。

在C語言中,\r表示的是只回車,\n表示的是只換行。


1.2緩沖區(qū)

看下面兩段代碼:

運(yùn)行這個(gè)代碼發(fā)現(xiàn):printf打印的內(nèi)容顯示三秒后程序結(jié)束

Linux小程序--進(jìn)度條,Linux學(xué)習(xí),linux,運(yùn)維,服務(wù)器

運(yùn)行這個(gè)代碼發(fā)現(xiàn):等待三秒后顯示printf打印的內(nèi)容程序結(jié)束

Linux小程序--進(jìn)度條,Linux學(xué)習(xí),linux,運(yùn)維,服務(wù)器

是因?yàn)橄旅孀舆@段代碼先執(zhí)行sleep函數(shù)嗎?當(dāng)然不是,C語言的代碼都是從上往下執(zhí)行的,那為什么下面的代碼是先暫停三秒然后才進(jìn)行打印的呢?

這是因?yàn)樵趕leep期間,字符串進(jìn)入了緩沖區(qū)。

緩沖區(qū)是計(jì)算機(jī)中用于臨時(shí)存儲(chǔ)數(shù)據(jù)的內(nèi)存區(qū)域。在輸入/輸出操作中,數(shù)據(jù)通常不會(huì)立即傳輸?shù)侥康牡兀窍却鎯?chǔ)在緩沖區(qū)中,以提高效率。緩沖區(qū)主要分為輸入緩沖區(qū)和輸出緩沖區(qū):

1. **輸入緩沖區(qū)**:用于存儲(chǔ)從輸入設(shè)備(如鍵盤、鼠標(biāo)、文件等)讀取的數(shù)據(jù),直到程序準(zhǔn)備處理這些數(shù)據(jù)。例如,當(dāng)你輸入文本時(shí),字符會(huì)被存儲(chǔ)在輸入緩沖區(qū)中,直到程序讀取并處理這些字符。

2. **輸出緩沖區(qū)**:用于存儲(chǔ)程序要發(fā)送到輸出設(shè)備(如屏幕、打印機(jī)、文件等)的數(shù)據(jù),直到達(dá)到一定條件時(shí)才會(huì)將數(shù)據(jù)發(fā)送到目的地。例如,當(dāng)程序使用 printf 函數(shù)打印文本時(shí),文本會(huì)先存儲(chǔ)在輸出緩沖區(qū)中,直到緩沖區(qū)滿了、遇到換行符或調(diào)用 fflush 函數(shù)時(shí)才會(huì)將數(shù)據(jù)刷新到屏幕上。

在前面的例子中,由于 printf 函數(shù)打印的文本被存儲(chǔ)在輸出緩沖區(qū)中,而在調(diào)用 sleep(3) 函數(shù)之前并沒有刷新緩沖區(qū),所以你會(huì)看到在暫停3秒后才會(huì)將文本顯示出來。這展示了緩沖區(qū)在程序執(zhí)行過程中的作用。緩沖區(qū)的使用可以提高I/O操作的效率,但有時(shí)也需要注意緩沖區(qū)的刷新以避免數(shù)據(jù)延遲顯示或丟失。

程序結(jié)束的時(shí)候,一般自動(dòng)沖刷緩沖區(qū)。緩沖區(qū)滿了也會(huì)進(jìn)行刷新。

包含\n之前的字符會(huì)立即刷新。

還有一種情況,我既不想緩沖區(qū)滿了才刷新,我也不想帶\n進(jìn)行刷新,該怎么辦呢?


如果你想在不等待緩沖區(qū)滿了或不使用換行符的情況下立即刷新輸出緩沖區(qū),你可以使用 fflush(stdout) 函數(shù)來手動(dòng)刷新標(biāo)準(zhǔn)輸出緩沖區(qū)。這樣可以確保緩沖區(qū)中的內(nèi)容立即被輸出到屏幕上,而不必等待緩沖區(qū)滿或遇到換行符。以下是一個(gè)示例代碼:

Linux小程序--進(jìn)度條,Linux學(xué)習(xí),linux,運(yùn)維,服務(wù)器

這個(gè)示例中, fflush(stdout) 函數(shù)用于手動(dòng)刷新標(biāo)準(zhǔn)輸出緩沖區(qū),確保在暫停3秒之前將文本立即顯示在屏幕上。這樣你就可以在需要時(shí)控制何時(shí)刷新輸出緩沖區(qū),而不必等待緩沖區(qū)滿或使用換行符。


2.實(shí)現(xiàn)倒計(jì)時(shí)?

?如何實(shí)現(xiàn)倒計(jì)時(shí)?

在同一個(gè)位置不斷的刷新數(shù)字,如何做到?

輸出一個(gè)數(shù)字,然后使用回車重新回到原來的位置(為了讓數(shù)字變動(dòng)的慢一些,我們?cè)O(shè)置sleep為1s,代碼示例:

Linux小程序--進(jìn)度條,Linux學(xué)習(xí),linux,運(yùn)維,服務(wù)器

我們運(yùn)行代碼發(fā)現(xiàn),什么數(shù)字都沒有顯示,程序10s后結(jié)束,這是因?yàn)槌霈F(xiàn)在緩沖區(qū)還沒有刷新就被覆蓋掉了,所有我們要使用fflush函數(shù)刷新緩沖區(qū)

Linux小程序--進(jìn)度條,Linux學(xué)習(xí),linux,運(yùn)維,服務(wù)器

這樣程序就有倒計(jì)時(shí)的效果了。

Linux小程序--進(jìn)度條,Linux學(xué)習(xí),linux,運(yùn)維,服務(wù)器

但如果是超過一個(gè)位數(shù)的這是就要控制回車移動(dòng)的位置了:

eg:20s倒計(jì)時(shí)

Linux小程序--進(jìn)度條,Linux學(xué)習(xí),linux,運(yùn)維,服務(wù)器

Linux小程序--進(jìn)度條,Linux學(xué)習(xí),linux,運(yùn)維,服務(wù)器


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

準(zhǔn)備工作:

Linux小程序--進(jìn)度條,Linux學(xué)習(xí),linux,運(yùn)維,服務(wù)器

第一個(gè)文件負(fù)責(zé)進(jìn)度條功能的實(shí)現(xiàn),第二個(gè)文件負(fù)責(zé)進(jìn)度條功能的聲明,第三個(gè)文件負(fù)責(zé)進(jìn)度條的運(yùn)行測(cè)試。Makefile負(fù)責(zé)進(jìn)度條的自動(dòng)化構(gòu)建。

Linux小程序--進(jìn)度條,Linux學(xué)習(xí),linux,運(yùn)維,服務(wù)器

什么樣的進(jìn)度條:

Linux小程序--進(jìn)度條,Linux學(xué)習(xí),linux,運(yùn)維,服務(wù)器

我們?cè)诘谝粋€(gè)位置預(yù)留100個(gè)字符的空間(顯示進(jìn)度條在增加),第二個(gè)位置顯示進(jìn)度,第三個(gè)位置有一個(gè)旋轉(zhuǎn)的光標(biāo)以表示在加載中。。。

首先定義一個(gè)char數(shù)組,memset全初始化為"\0",這時(shí)我們就一個(gè)一個(gè)的往數(shù)組中填寫”#"

(間隔1s)表示進(jìn)度條的增加

Linux小程序--進(jìn)度條,Linux學(xué)習(xí),linux,運(yùn)維,服務(wù)器

初步效果:確實(shí)在增加,但我們只需要他在一行中不斷的打印

Linux小程序--進(jìn)度條,Linux學(xué)習(xí),linux,運(yùn)維,服務(wù)器

我們通過回車去覆蓋,然后讓緩沖區(qū)不斷的刷新,這就有了只在一行中不斷增加的效果

+、Linux小程序--進(jìn)度條,Linux學(xué)習(xí),linux,運(yùn)維,服務(wù)器

Linux小程序--進(jìn)度條,Linux學(xué)習(xí),linux,運(yùn)維,服務(wù)器

我們?cè)谶\(yùn)行的過程中發(fā)現(xiàn)1s的間隔太慢,在這里我們將sleep函數(shù)換成(usleep)函數(shù),間隔單位為微秒。(這里間隔換算為秒為:0.02s)

Linux小程序--進(jìn)度條,Linux學(xué)習(xí),linux,運(yùn)維,服務(wù)器

我們?cè)陲@示的時(shí)候發(fā)現(xiàn),進(jìn)度條的框是隨著進(jìn)度的增加而變大的,這樣的效果不太好看,因此我們直接預(yù)留100字符大小的框,這時(shí)我們?cè)俅蛴〉臅r(shí)候就會(huì)發(fā)現(xiàn)框是有100個(gè)字符“#”的長度,但是進(jìn)度條是從右往左增加的,這時(shí)因?yàn)樽址J(rèn)是右對(duì)齊的,加上-變成左對(duì)齊。

Linux小程序--進(jìn)度條,Linux學(xué)習(xí),linux,運(yùn)維,服務(wù)器

Linux小程序--進(jìn)度條,Linux學(xué)習(xí),linux,運(yùn)維,服務(wù)器

這時(shí)候我們還可以在后面加上顯示進(jìn)度了百分之多少,在Linux中打印%,只需要輸入連續(xù)的兩個(gè)%:

Linux小程序--進(jìn)度條,Linux學(xué)習(xí),linux,運(yùn)維,服務(wù)器

Linux小程序--進(jìn)度條,Linux學(xué)習(xí),linux,運(yùn)維,服務(wù)器

最后我們將正在加載的效果顯示出來:原理和倒計(jì)時(shí)一樣,為了達(dá)到旋轉(zhuǎn)的效果,我們將用幾個(gè)方向的線順序的出現(xiàn)來達(dá)到旋轉(zhuǎn)的視覺效果

Linux小程序--進(jìn)度條,Linux學(xué)習(xí),linux,運(yùn)維,服務(wù)器

在這里模len是為了防止數(shù)組的越界

Linux小程序--進(jìn)度條,Linux學(xué)習(xí),linux,運(yùn)維,服務(wù)器

Linux小程序--進(jìn)度條,Linux學(xué)習(xí),linux,運(yùn)維,服務(wù)器

這時(shí)就有了旋轉(zhuǎn)的效果了。

完整代碼:文章來源地址http://www.zghlxwxcb.cn/news/detail-833122.html

#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;
}

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

本文來自互聯(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服務(wù)器常見運(yùn)維性能測(cè)試(1)綜合跑分unixbench、superbench

    Linux服務(wù)器常見運(yùn)維性能測(cè)試(1)綜合跑分unixbench、superbench

    最近需要測(cè)試一批服務(wù)器的相關(guān)硬件性能,以及在常規(guī)環(huán)境下的硬件運(yùn)行穩(wěn)定情況,需要持續(xù)拷機(jī)測(cè)試穩(wěn)定性。所以找了一些測(cè)試用例。本次測(cè)試包括在服務(wù)器的高低溫下性能記錄及壓力測(cè)試,高低電壓下性能記錄及壓力測(cè)試,常規(guī)環(huán)境下CPU滿載穩(wěn)定運(yùn)行的功率記錄。 這個(gè)系

    2024年02月04日
    瀏覽(103)
  • [1Panel]開源,現(xiàn)代化,新一代的 Linux 服務(wù)器運(yùn)維管理面板

    [1Panel]開源,現(xiàn)代化,新一代的 Linux 服務(wù)器運(yùn)維管理面板

    本期測(cè)評(píng)試用一下1Panel這款面板。1Panel是國內(nèi)飛致云旗下開源產(chǎn)品。整個(gè)界面簡潔清爽,后端使用GO開發(fā),前端使用VUE的Element-Plus作為UI框架,整個(gè)面板的管理都是基于docker的,想法很先進(jìn)。官方還提供了視頻的使用教程,本期為大家按照本專欄的基本內(nèi)容進(jìn)行多方面的測(cè)評(píng)。

    2024年02月07日
    瀏覽(66)
  • Linux服務(wù)器常見運(yùn)維性能測(cè)試(3)CPU測(cè)試super_pi、sysbench

    Linux服務(wù)器常見運(yùn)維性能測(cè)試(3)CPU測(cè)試super_pi、sysbench

    最近需要測(cè)試一批服務(wù)器的相關(guān)硬件性能,以及在常規(guī)環(huán)境下的硬件運(yùn)行穩(wěn)定情況,需要持續(xù)拷機(jī)測(cè)試穩(wěn)定性。所以找了一些測(cè)試用例。本次測(cè)試包括在服務(wù)器的高低溫下性能記錄及壓力測(cè)試,高低電壓下性能記錄及壓力測(cè)試,常規(guī)環(huán)境下CPU滿載穩(wěn)定運(yùn)行的功率記錄。 這個(gè)系

    2024年02月02日
    瀏覽(51)
  • 華為云云耀云服務(wù)器L實(shí)例評(píng)測(cè) | Linux系統(tǒng)寶塔運(yùn)維部署H5游戲

    華為云云耀云服務(wù)器L實(shí)例評(píng)測(cè) | Linux系統(tǒng)寶塔運(yùn)維部署H5游戲

    本章節(jié)內(nèi)容,我們主要介紹華為云耀服務(wù)器L實(shí)例,從云服務(wù)的優(yōu)勢(shì)講起,然后講解華為云耀服務(wù)器L實(shí)例資源面板如何操作,如何使用寶塔運(yùn)維服務(wù),如何使用運(yùn)維工具可視化安裝nginx,最后部署一個(gè)自研的H5的小游戲(6歲的小朋友玩的很開心??)。 前端的同學(xué)如果想把自己

    2024年02月07日
    瀏覽(24)
  • 【Linux學(xué)習(xí)筆記】Linux服務(wù)器:配置與管理samba服務(wù)器

    【Linux學(xué)習(xí)筆記】Linux服務(wù)器:配置與管理samba服務(wù)器

    一、【linux學(xué)習(xí)筆記】紅帽Linux 7.8系統(tǒng)在虛擬機(jī)上的安裝 二、【Linux學(xué)習(xí)筆記】Linux系統(tǒng)的基本操作? 三、【Linux學(xué)習(xí)筆記】管理Linux操作系統(tǒng):用戶管理? 四、【Linux學(xué)習(xí)筆記】管理Linux操作系統(tǒng):磁盤管理 五、【Linux學(xué)習(xí)筆記】管理Linux操作系統(tǒng):軟件安裝? 六、?【Linux學(xué)習(xí)

    2024年02月02日
    瀏覽(102)
  • Linux+服務(wù)器后臺(tái)運(yùn)行程序

    Linux+服務(wù)器后臺(tái)運(yùn)行程序

    在Linux服務(wù)器直接運(yùn)行程序,程序運(yùn)行的時(shí)間較長,程序經(jīng)常會(huì)因?yàn)榫W(wǎng)絡(luò)連接問題異常終止,一直盯著程序運(yùn)行又費(fèi)時(shí)費(fèi)力,這時(shí)后臺(tái)運(yùn)行程序是更好的解決方式。But,如果服務(wù)器重啟了,那所有進(jìn)程都斷掉了,只能重新跑代碼。 screen 假如遇到一些比較費(fèi)時(shí)間的程序,但是又

    2024年02月22日
    瀏覽(32)
  • 【Linux】從云服務(wù)器購買到第一個(gè)Linux程序

    【Linux】從云服務(wù)器購買到第一個(gè)Linux程序

    目錄 1. 我們?yōu)槭裁匆獙W(xué)Linux 2. 云服務(wù)器購買 3. 遠(yuǎn)程連接云服務(wù)器 4. 如何創(chuàng)建新用戶? ?5. 第一個(gè)Linux程序 總結(jié): 寫在最后: 作為一個(gè)程序員,你必須學(xué)好Linux,至于為什么,這個(gè)問題, 在我們?nèi)蘸蟮膶W(xué)習(xí)中,自然會(huì)慢慢展現(xiàn)出來,而校招對(duì)于Linux也有掌握的要求, 所以我們

    2023年04月15日
    瀏覽(23)
  • 【Linux環(huán)境搭建】從云服務(wù)器購買到第一個(gè)Linux程序

    【Linux環(huán)境搭建】從云服務(wù)器購買到第一個(gè)Linux程序

    目錄 1. 我們?yōu)槭裁匆獙W(xué)Linux 2. 云服務(wù)器購買 3. 遠(yuǎn)程連接云服務(wù)器 4. 如何創(chuàng)建新用戶? ?5. 第一個(gè)Linux程序 總結(jié): 寫在最后: 作為一個(gè)程序員,你必須學(xué)好Linux,至于為什么,這個(gè)問題, 在我們?nèi)蘸蟮膶W(xué)習(xí)中,自然會(huì)慢慢展現(xiàn)出來,而校招對(duì)于Linux也有掌握的要求, 所以我們

    2023年04月17日
    瀏覽(23)
  • 連接云服務(wù)器及Linux常用指令學(xué)習(xí)

    連接云服務(wù)器及Linux常用指令學(xué)習(xí)

    1、通過系統(tǒng)終端連接云服務(wù)器(需要有ssh) win+R,輸入cmd進(jìn)入終端 輸入命令:ssh ubuntu@ip號(hào),注意:騰訊云服務(wù)器默認(rèn)用戶為ubuntu而阿里云默認(rèn)用戶為root ? ? ? ? ? ? ? ? ?? 2、通過XShell連接云服務(wù)器 ?點(diǎn)擊連接后會(huì)彈出一個(gè)彈框需要填寫用戶名,騰訊云服務(wù)器填ubuntu,阿里

    2024年02月06日
    瀏覽(91)
  • 深度學(xué)習(xí)服務(wù)器(Linux)開發(fā)環(huán)境搭建教程

    深度學(xué)習(xí)服務(wù)器(Linux)開發(fā)環(huán)境搭建教程

    當(dāng)你拿到一臺(tái)服務(wù)器的使用權(quán)時(shí),最頭疼的莫過于登陸服務(wù)區(qū)并配置開發(fā)環(huán)境。本文將從0開始,講述一臺(tái)剛申請(qǐng)的服務(wù)器遠(yuǎn)程登陸并配置開發(fā)環(huán)境的全過程。希望對(duì)你有所幫助 打開MobaXterm軟件,創(chuàng)建一個(gè)新的Session,選擇SSH登陸。其中Remote host填服務(wù)器的IP地址,Specify userna

    2024年02月05日
    瀏覽(19)

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

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

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

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包