Linux --進度條小程序更新

這里使用隨機數來模擬下載量,來實現一個下載進度更新的小程序

main.c 的代碼,其中downlod這個函數使用的是函數指針,如果有多個進度條函數可以傳入進行多樣化的格式下載顯示,還需要傳入一個下載總量,每次"下載以后刷新一次進度條",具體實現如下。

#include<stdio.h>
#include<stdlib.h>
#include"process.h"
#include<time.h>const int base=100;
double total1 =2048.0;
double total2 =500.0;
double once =0.5;
typedef void (*flush_t)(double current,double total);void downlod(flush_t f,double total)
{double current=0.0;double speed=0.0;while(current <= total){int n = rand() % base + 1 ;speed=n * once;current+=speed;if(current>total){current=total;process(current,total);usleep(100000);break;}f(current,total);usleep(100000);}printf("\n");
}int main()
{srand(time(NULL));downlod(process,total1);downlod(process,total2);return 0;
}

process.c的實現與上一篇文章的方法類似,只是更改了一個下載樣式 ' . ',lable使用一個數組來儲存,其中點的個數由靜態變量n控制,在第一個循環中當i等于NUM大小時會將最后一個字符設置為'\0',否則在打印的時候會出現“燙燙燙”等字符,這是因為字符串以'\0'作為結束標志。此次代碼根據真實的應用場景,進行動態刷新,由percent控制'#'的數量。最后在打印進度條時還添加了當前下載量和總的下載量,下載完成時狀態欄會顯示Finish,具體實現如下。

#include"process.h"
#include<string.h>#define NUM 100
#define STYLE '='
#define POINT '.'
#define PUM 7void process(double current, double total)
{char bar[NUM/2+2];memset(bar , '\0' , sizeof(bar));int percent=(int)(current / total * 100);int i = 0;for(i = 0; i <=percent; i++){if(i % 2  == 0){bar[i/2]=STYLE;bar[i/2+1]='>';}if(i == NUM)bar[i/2+1]='\0';}char lable[PUM];static int n= 0;n++;n %= PUM;memset(lable,'\0',PUM);for(i = 0; i < PUM; i++){if (i < n )lable[i]=POINT;else lable[i]=' ';if(i == PUM-1)lable[i]='\0'; }if(percent==100){printf("已下載量: %-6.1f mb 總下載量: %-6.1f mb[%-51s][%3d%%][Finish]\r",current,total,bar,percent); }else{printf("已下載量: %-6.1f mb 總下載量: %-6.1f mb[%-51s][%3d%%][%-6s]\r",current,total,bar,percent,lable);}fflush(stdout);
}

代碼運行效果圖:

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/82046.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/82046.shtml
英文地址,請注明出處:http://en.pswp.cn/web/82046.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

【算法】貪心算法

一、貪心算法基本思想 貪心算法總是作出在當前看來最好的選擇。也就是說貪心算法并不從 整體最優考慮&#xff0c;它所作出的選擇只是在某種意義上的局部最優選擇。 我們希望貪心算法得到的最終結果也是整體最優的。雖然貪心算法不 能對所有問題都得到整體最優解&#xff08;O…

MySQL事務與鎖機制詳解:確保數據一致性的關鍵【MySQL系列】

本文將系統講解 MySQL 中事務的四大特性、隔離級別與實現原理&#xff0c;深入拆解鎖機制的種類與應用場景&#xff0c;并結合典型死鎖案例進行分析&#xff0c;為你構建起應對復雜一致性問題的堅實基礎。 一、什么是事務&#xff1f; 事務&#xff08;Transaction&#xff09…

UE5 Mat HLSL - Load

特性Load()Sample()輸入類型整數索引&#xff08;int2/int3&#xff09;浮點 UV 采樣器狀態&#xff08;SamplerState&#xff09;數據獲取精確讀取指定位置的原始數據基于 UV 插值和過濾后的數據典型用途精確計算、非過濾訪問&#xff08;如物理模擬&#xff09;紋理貼圖渲染…

基于vue框架的獨居老人上門護理小程序的設計r322q(程序+源碼+數據庫+調試部署+開發環境)帶論文文檔1萬字以上,文末可獲取,系統界面在最后面。

系統程序文件列表 項目功能&#xff1a;用戶,護理人員,服務預約,服務評價,服務類別,護理項目,請假記錄 開題報告內容 基于Vue框架的獨居老人上門護理小程序的設計開題報告 一、研究背景與意義 &#xff08;一&#xff09;研究背景 隨著社會老齡化的加劇&#xff0c;獨居老…

鴻蒙如何引入crypto-js

import CryptoJS from ohos/crypto-js 報錯。 需要先安裝ohom&#xff1a;打開DevEco&#xff0c;點擊底部標簽組&#xff08;有Run, Build, Log等&#xff09;中的Terminal&#xff0c;在Terminal下執行&#xff1a; ohpm install 提示 install completed in 0s 119ms&…

【C++】入門基礎知識(1.5w字詳解)

本篇博客給大家帶來的是一些C基礎知識&#xff01;包含函數棧幀的詳解&#xff01; &#x1f41f;&#x1f41f;文章專欄&#xff1a;C &#x1f680;&#x1f680;若有問題評論區下討論&#xff0c;我會及時回答 ??歡迎大家點贊、收藏、分享&#xff01; 今日思想&#xff1…

二.MySQL庫的操作

一.創建數據庫create database 名稱; 字符集和校驗規則 一、字符集&#xff08;Character Set&#xff09; 表示數據庫中可以使用哪些字符。 例如&#xff1a;utf8 可以存儲包括中文在內的多種語言字符&#xff0c;gbk 更適合中文字符環境。 功能舉例控制支持哪些語言字符utf…

【Linux 學習計劃】-- 命令行參數 | 環境變量

目錄 命令行參數 環境變量 環境變量的本質是什么&#xff1f; 相關配置文件 修改環境變量的相關操作 代碼獲取env —— environ 內建命令 結語 命令行參數 試想一下&#xff0c;我們的main函數&#xff0c;也是一個函數&#xff0c;那么我們的main函數有沒有參數呢&am…

具有離散序列建模的統一多模態大語言模型【AnyGPT】

第1章 Instruction 在人工智能領域、多模態只語言模型的發展正迎來新的篇章。傳統的大型語言模型(LLM)在理解和生成人類語言方面展現出了卓越的能力&#xff0c;但這些能力通常局限于 文本處理。然而&#xff0c;現實世界是一個本質上多模態的環境&#xff0c;生物體通過視覺、…

git查看commit屬于那個tag

1. 快速確認commit原始分支及合入tag # git describe 213b4b3bbef2771f7a1b8166f6e6989442ca67c8 查看commit合入tag # git describe 213b4b3bbef2771f7a1b8166f6e6989442ca67c8 --all 查看commit原始分支 2.查看分支與master關系 # git show --all 0.5.67_0006 --stat 以縮…

day10機器學習的全流程

浙大疏錦行 1.讀取數據 import pandas as pd import pandas as pd #用于數據處理和分析&#xff0c;可處理表格數據。 import numpy as np #用于數值計算&#xff0c;提供了高效的數組操作。 import matplotlib.pyplot as plt #用于繪制各種類型的圖表# 設置中文字體…

基于對比學習的推薦系統開發方案,使用Python在PyCharm中實現

以下是一個基于對比學習的推薦系統開發方案,使用Python在PyCharm中實現。本文將詳細闡述技術原理、系統設計和完整代碼實現。 基于對比學習的推薦系統開發方案 一、技術背景與原理 1.1 對比學習核心思想 對比學習(Contrastive Learning)通過最大化正樣本相似度、最小化負…

2025山東CCPC題解

文章目錄 L - StellaD - Distributed SystemI - Square PuzzleE - Greatest Common DivisorG - Assembly Line L - Stella 題目來源&#xff1a;L - Stella 解題思路 簽到題&#xff0c;因為給出的字母不是按順序&#xff0c;可以存起來賦其值&#xff0c;然后在比較。 代碼…

某航參數逆向及設備指紋分析

文章目錄 1. 寫在前面2. 接口分析3. 加密分析4. 算法還原5. 設備指紋風控分析與繞過 【&#x1f3e0;作者主頁】&#xff1a;吳秋霖 【&#x1f4bc;作者介紹】&#xff1a;擅長爬蟲與JS加密逆向分析&#xff01;Python領域優質創作者、CSDN博客專家、阿里云博客專家、華為云享…

Python訓練營---Day41

DAY 41 簡單CNN 知識回顧 數據增強卷積神經網絡定義的寫法batch歸一化&#xff1a;調整一個批次的分布&#xff0c;常用與圖像數據特征圖&#xff1a;只有卷積操作輸出的才叫特征圖調度器&#xff1a;直接修改基礎學習率 卷積操作常見流程如下&#xff1a; 1. 輸入 → 卷積層 …

【Netty系列】Reactor 模式 2

目錄 流程圖說明 關鍵流程 以下是 Reactor 模式流程圖&#xff0c;結合 Netty 的主從多線程模型&#xff0c;幫助你直觀理解事件驅動和線程分工&#xff1a; 流程圖說明 Clients&#xff08;客戶端&#xff09; 多個客戶端&#xff08;Client 1~N&#xff09;向服務端發起連…

前端開發中 <> 符號解析問題全解:React、Vue 與 UniApp 場景分析與解決方案

前端開發中 <> 符號解析問題全解&#xff1a;React、Vue 與 UniApp 場景分析與解決方案 在前端開發中&#xff0c;<> 符號在 JSX/TSX 環境中常被錯誤解析為標簽而非比較運算符或泛型&#xff0c;導致語法錯誤和邏輯異常。本文全面解析該問題在不同框架中的表現及解…

【Web應用】 Java + Vue 前后端開發中的Cookie、Token 和 Swagger介紹

文章目錄 前言一、Cookie二、Token三、Swagger總結 前言 在現代的 web 開發中&#xff0c;前后端分離的架構越來越受到歡迎&#xff0c;Java 和 Vue 是這一架構中常用的技術棧。在這個過程中&#xff0c;Cookie、Token 和 Swagger 是三個非常重要的概念。本文將對這三個詞進行…

投稿Cover Letter怎么寫

Cover Letter控制在一頁比較好&#xff0c;簡短有力地推薦你的文章。 Dear Editors: Small objects detection in remote sensing field remains several challenges, including complex backgrounds, limited pixel representation, and dense object distribution, which c…

創建型設計模式之Prototype(原型)

創建型設計模式之Prototype&#xff08;原型&#xff09; 摘要&#xff1a; Prototype&#xff08;原型&#xff09;設計模式通過復制現有對象來創建新對象&#xff0c;避免重復初始化操作。該模式包含Prototype接口聲明克隆方法、ConcretePrototype實現具體克隆邏輯&#xff…