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

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

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

?> 作者簡(jiǎn)介:?舊言~,目前大二,現(xiàn)在學(xué)習(xí)Java,c,c++,Python等
> 座右銘:松樹千年終是朽,槿花一日自為榮。

> 目標(biāo):自己能實(shí)現(xiàn)進(jìn)度條

> 毒雞湯:

> 望小伙伴們點(diǎn)贊??收藏?加關(guān)注喲?????

Linux小程序之進(jìn)度條,Linux初階,linux

??前言

????????咱們學(xué)習(xí)這么久的指令,一句話來概括,都忘光咯,學(xué)個(gè)錘錘??????,感覺白學(xué)了,博主也是感同身受,畢竟沒有相應(yīng)的練習(xí),很容易遺忘,咱們只要記住主要的指令就可以了,忘了或者不熟咱就查查文檔。今天捏我們用我們所學(xué)的知識(shí)編寫一個(gè)進(jìn)度條,看看下面:

QQ錄屏20231129162350

Linux小程序之進(jìn)度條,Linux初階,linux

??前景知識(shí)一:\r和\n的理解

????????C語言會(huì)提供一些特殊的字符,比如說我們常用的\n,這個(gè)字符大家都不陌生,不就是換行嘛,這個(gè)我懂,但是還有一個(gè)字符\r,這個(gè)字符的作用是回車的意思。在這塊就有人說不都是一個(gè)意思嘛??,敲敲這些老鐵們的頭??,當(dāng)然不可能是一個(gè)意思。

??理解字符含意

\r(回車):

  • 就是在第二行讓光標(biāo)跳到最開始的位置,這個(gè)操作就是回車。

\n(換行):

  • 讓光標(biāo)從第一行跳到第二行,但是光標(biāo)只是垂直向下跳,并沒有在第二行的開始。這個(gè)操作就是換行。

直接說字符的意思就有一點(diǎn)抽象,咱們來個(gè)代碼看看??????

??代碼理解字符

\n(換行):代碼

#include<stdio.h>

int main()
{
   printf("hello world\n");

   return 0;

}

Linux小程序之進(jìn)度條,Linux初階,linux

\r(回車):代碼

#include<stdio.h>

int main()
{
   printf("hello world\r");

   return 0;

}

Linux小程序之進(jìn)度條,Linux初階,linux

基于上面的原因我這不講解,在后面的緩沖區(qū)里面我們?cè)敿?xì)講解。

??前景知識(shí)二:認(rèn)識(shí)緩沖區(qū)

這里我們要知道什么是緩沖區(qū),咱可以看看官方用語:緩沖區(qū)處理 - Windows drivers | Microsoft Learn

簡(jiǎn)單來講就是:

  • 在內(nèi)存中預(yù)留了一塊空間,用來緩沖輸入或輸出的數(shù)據(jù),這個(gè)保留的空間被稱為緩沖區(qū)。

??回顧回車和換行

咱們?cè)倏纯催@兩張圖片:

Linux小程序之進(jìn)度條,Linux初階,linux

Linux小程序之進(jìn)度條,Linux初階,linux

我們知道用 \n 的話就可以打印出來,而 \r,不能打印出來。

  • 由于顯示器模式是行刷新緩沖區(qū)是按行緩沖的,沒有\(zhòng)n,就不能立即刷新。
  • 由于\r 回到行首后,會(huì)進(jìn)行覆蓋寫,shell 提示符會(huì)覆蓋掉之前寫的 “hello world”。

??sleep和ffush理解

????????使用這個(gè)函數(shù)是在<unistd.h>庫(kù)中,使用它們需要包含頭文件 #include <unistd.h>,這里和緩沖區(qū)有什么關(guān)系??,因?yàn)樵谶M(jìn)度條中需要用到這兩函數(shù)。

咱們先看這些個(gè)函數(shù)的作用

  • sleep:休眠函數(shù),單位是秒。
  • usleep:休眠函數(shù),單位是ms(10﹣6?)
  • fflush:刷新緩沖區(qū)

咱們來個(gè)簡(jiǎn)單的代碼看看這些函數(shù)作用:

#include<stdio.h>
#include<unistd.h>

int main()
{
   printf("hello world\r"); 
   //刷新緩沖區(qū)
   fflush(stdout);
   printf("\n");
   //休眠三秒
   sleep(3);
   return 0;

}

Linux小程序之進(jìn)度條,Linux初階,linux

??前景知識(shí)三:簡(jiǎn)單倒計(jì)時(shí)

實(shí)現(xiàn)進(jìn)度條咱們得先實(shí)現(xiàn)一下簡(jiǎn)單的倒計(jì)時(shí),為了給進(jìn)度條鋪墊,簡(jiǎn)單來講就是當(dāng)炮灰。

Linux小程序之進(jìn)度條,Linux初階,linux

效果演繹:

全部代碼:

#include<stdio.h>
#include<unistd.h>

int main()
{
   int cnt = 10;
   while(cnt >= 0)
   {
       printf("%-2d\r",cnt);
       fflush(stdout);
       sleep(1);
       cnt--;
   }
   printf("\n");
   return 0;
}

過程分析:

  • 定義倒計(jì)時(shí)變量 cnt,讓其逐漸遞降。
  • 核心就是用 \r 回到緩沖區(qū)行首進(jìn)行覆蓋寫,然后fflush不斷刷新出出來。
  • 格式調(diào)整,打印 cnt==10 時(shí),在緩沖區(qū)打印的其實(shí)是字符1和字符0,如果我們不用 2d% 來調(diào)整格式,而用 d% 的話,那么覆蓋寫只會(huì)覆蓋第一位字符 1 11 的位置,而第二位的字符 0 00, 還留在緩沖區(qū)原來的位置,于是倒計(jì)時(shí)便會(huì)變?yōu)橄旅孢@樣
    ??10->90->80->70->60->50->40->30->20->10->00 ,-2d% 加個(gè)負(fù)號(hào)保證其向左對(duì)齊
  • 倒計(jì)時(shí)完加個(gè) \n符,shell 提示符就不會(huì)出現(xiàn)在倒計(jì)時(shí)后面。

??進(jìn)度條過程分析

原理:其原理就是不斷地覆蓋,然后將其像早以前的動(dòng)畫片一樣,變成一個(gè)動(dòng)畫。

  • 第一個(gè)中括號(hào)就是表示進(jìn)度條。
  • 第二個(gè)中括號(hào)表示進(jìn)度。
  • 第三個(gè)表示旋轉(zhuǎn)樣式。

QQ錄屏20231129162350

game.h

#include<stdio.h>
#include<time.h>
#include<unistd.h>
 
void game(double rate);
void download();

game.c

#include"game.h"
#define MAX 1024*1024*1024
 
char* buff = "|/-\\";
int i = 0;
char arr[102] = { 0 };
void game(double rate)
{
	if (rate <= 1.0)
	{
		arr[0] = '=';
	}
	printf("[%-100s][%.1lf%%][%c]\r", arr, rate, buff[i % 4]);
	fflush(stdout);
	arr[(int)rate] = '=';
	if (rate< 99.0)
	{
		arr[(int)rate+1] = '>';
	}
	i++;
}
 
void download()
{
	srand(time(NULL)^1023);
	int max = MAX;
	int cnt = 0;
	double rate = 0;
	while (rate<100.0)
	{
		cnt+= rand() % (1024*1024);
		rate = ((cnt*1.0)/max)* 100;
		if (rate > 100)
		{
			rate = 100;
		}
		game(rate);
		usleep(50000);
	}
}

test.c

?
#include"game.h"
 
int main()
{
	download();
	return 0;
}

?

makefile

all:test.o game.o
	gcc -o $@ $^

test.o:test.c
	gcc -c -o $@ $^

game.o:game.c
	gcc -c -o $@ $^

.PHONY:clean
clean:
	rm -rf *.o all

?

????結(jié)束語

? ? ? ?今天內(nèi)容就到這里啦,時(shí)間過得很快,大家沉下心來好好學(xué)習(xí),會(huì)有一定的收獲的,大家多多堅(jiān)持,嘻嘻,成功路上注定孤獨(dú),因?yàn)閳?jiān)持的人不多。那請(qǐng)大家舉起自己的小說手給博主一鍵三連,有你們的支持是我最大的動(dòng)力??????,回見。

Linux小程序之進(jìn)度條,Linux初階,linux文章來源地址http://www.zghlxwxcb.cn/news/detail-752160.html

到了這里,關(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小程序--進(jìn)度條

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

    目錄 1.知識(shí)補(bǔ)充 1.1回車和換行? 1.2緩沖區(qū) 2.實(shí)現(xiàn)倒計(jì)時(shí)? 3.實(shí)現(xiàn)進(jìn)度條? 1.在制作小程序進(jìn)度條之前,我們先了解一下,回車換行和行緩沖區(qū)的概念。 2.動(dòng)態(tài)效果,在同一個(gè)位置刷新不同的圖像,實(shí)現(xiàn)一個(gè)倒計(jì)時(shí)的效果。 3.有了上面的基礎(chǔ)我們就可以實(shí)現(xiàn)進(jìn)度條了 所以說回車

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

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

    這篇文章我們一起來完成我們Linux中的第一個(gè)小程序——進(jìn)度條 在C語言中,字符可以分為可顯字符(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語言時(shí),我們可以粗略把字符分為 可顯字符 和 控制字符 . ? ? ? ? 在按回車換到下一行開始的操作時(shí),實(shí)際上是進(jìn)行了兩個(gè)操作: 1. 讓光標(biāo)跳到下一行(只是垂直向下,這

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

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

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

    2024年02月13日
    瀏覽(15)
  • 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í)這么久的指令,一句話來概括,都忘光咯,學(xué)個(gè)錘錘??????,

    2024年02月05日
    瀏覽(11)
  • 【Linux】實(shí)現(xiàn)進(jìn)度條小程序

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

    個(gè)人主頁 : zxctscl 如有轉(zhuǎn)載請(qǐng)先通知 在之前已經(jīng)了解了 【Linux】vim的使用和 【Linux】編譯器-gcc/g++使用還有 【Linux】自動(dòng)化構(gòu)建工具-make/Makefile,有了這些工具,這次來實(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語言,數(shù)據(jù)結(jié)構(gòu)初階,Linux,C++ 動(dòng)態(tài)規(guī)劃算法 如 果 你 喜 歡 作 者 的 文 章 ,就 給 作 者 點(diǎn) 點(diǎn) 關(guān) 注 吧! 大家好久不見,已經(jīng)快一個(gè)月沒有更新Linux相關(guān)的知識(shí)了,希望大家

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

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

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

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

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

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

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

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

    這篇博客要綜合利用以前的知識(shí),來實(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í),并沒有直接打印出“hello bit,hello world...”,而是當(dāng)程序運(yùn)行結(jié)束后

    2024年03月10日
    瀏覽(22)

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

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

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

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包