Linux(6)——第一個小程序(進度條)

目錄

一、行緩沖區的概念

二、\r與\n

三、進度條代碼書寫與展示

1.如何表示進度條是在加載的

2.整體框架

3.書寫

3.1makefile:

3.2process.h:?

3.3process.c:

3.4main.c:

3.5美化?


一、行緩沖區的概念

首先,我們來見一見行緩沖區,對比下面兩個代碼就可以理解了。

這個的結果毋庸置疑了就是:

那么如果我們修改一下這個代碼呢,比如這樣:

結果又如何呢,我們運行一下:

我們驚奇的發現,居然和原來完全不一樣,這個代碼顯示的是先休眠3秒再打印出hello world。

這也就說明了有行緩沖區的存在。

顯示器對應的是行刷新,即當緩沖區當中遇到\n'或是緩沖區被寫滿才會被打印出來,而在第二份帶碼當中并沒有\n,所以字符串hello world先被寫到緩沖區當中去了,然后休眠3秒后,直到程序運行結束時才將hello world打印到顯示器當中。?

二、\r與\n

\r:回車,讓光標回到行首(類似于之前的打字機)

\n:換行,讓光標來到下一行

而我們電腦鍵盤上面的enter鍵就是\r+\n(老式鍵盤的enter鍵的形狀也說明了這一點)

既然是是使光標回到本行行首,那么如果我們向顯示器上寫了一個數之后再讓光標回到本行行首,然后再寫一個數,不就相當于將前面一個數字覆蓋了嗎?
但這里有一個問題:不使用"\n’進行換行怎么將緩沖區當中數據打印出來?
這里我們可以使用fflush函數,該函數可以刷新緩沖區,即將緩沖區當中的數據刷新當顯示器當中。基于這個特性我們可以編寫一個倒計時的程序。?

光標回到行首再打印就實現了倒計時的效果:

三、進度條代碼書寫與展示

根據上面的基本知識,我們就可以寫一個進度條的代碼了。

1.如何表示進度條是在加載的

有的時候們在下載東西的時候,進度條可能會卡著不動,但是確實是在運行,我們該怎么表示呢?

這里我夢可以設置一個標記在隨機改變形狀,就可以知道是不是在運行了。

例如:

const char *lable="|/-\\";?

在這幾個符號之間切換。

2.整體框架

我們為了實現下載功能,我們可以模擬實現一個下載的場景,設置總的下載數據的值,然后設置speed值,用休眠時間模擬下載的速度。for()循環模擬正在下載數據。

3.書寫

3.1makefile:

實現多文件編譯

3.2process.h:?

3.3process.c:

3.4main.c:

效果展示:

3.5美化?

如果你覺得這樣有點單調,你也可以加上顏色,關于ANSI顏色轉義序列可以到網上找到。

改進后:

效果展示:

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

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

相關文章

51頁 @《人工智能生命體 新啟點》中國龍 原創連載

《 人工智能生命體 新啟點 》一書,以建立意識來建立起生命體,讓其成為獨立、自主的活動個體;也就可以理解為建立生命體的思想指導。 讓我們能夠賦予他靈魂!

微軟全新開源命令行文本編輯器:Edit — 致敬經典,擁抱現代

名人說:博觀而約取,厚積而薄發。——蘇軾《稼說送張琥》 創作者:Code_流蘇(CSDN)(一個喜歡古詩詞和編程的Coder??) 目錄 一、引言:命令行的新利器二、Edit:致敬經典,擁抱現代1. 命令行的“新升級”2. 為什么要有 Edit?三、核心功能與特性一覽1. 完全開源、MIT 許可證…

使用MybatisPlus實現sql日志打印優化

背景: 在排查無憂行后臺服務日志時,一個請求可能會包含多個執行的sql,經常會遇到SQL語句與對應參數不連續顯示,或者參數較多需要逐個匹配的情況。這種情況下,如果需要還原完整SQL語句就會比較耗時。因此,我…

go多線程壓測監控

實現了 go多協程壓力測試實現了Monitor,異步統計qps、時延、cpu(client端)等指標,周期printStat。只需要把單條執行func傳給Monitor即可命令行傳參ctrlc之后正常退出(mock cpu 占用) 代碼見 https://gitee.com/bbjg001/golearning/tree/master/others/…

安卓無障礙腳本開發全教程

文章目錄 第一部分:無障礙服務基礎1.1 無障礙服務概述核心功能: 1.2 基本原理與架構1.3 開發環境配置所需工具:關鍵依賴: 第二部分:創建基礎無障礙服務2.1 服務聲明配置2.2 服務配置文件關鍵屬性說明: 2.3 …

閑時處理技術---CAD C#二次開發

在CAD C#二次開發中,使用閑時處理技術可以提高程序的響應性能和資源利用率。以下是一般的實現步驟: 1. 了解CAD的事件機制 CAD提供了一些事件,如 Idle 事件,當CAD應用程序處于空閑狀態時會觸發該事件。你可以訂閱這個事件來執行閑…

Git研究

以下命令在CentOS系統下執行 創建Git倉庫 git init git-example 監控.git目錄的變化情況: watch -n .5 tree .git 寫入文件內容,并把文件添加到Stage暫存區 echo 1 > t.txtgit add 1.txt 觀察結果如下:objects下多出了一個d00491fd…

野火魯班貓(arrch64架構debian)從零實現用MobileFaceNet算法進行實時人臉識別(四)安裝RKNN Toolkit Lite2

RKNN Toolkit Lite2 是瑞芯微專為RK系列芯片開發的NPU加速推理API。若不使用該工具,計算任務將僅依賴CPU處理,無法充分發揮芯片高達6TOPS的NPU算力優勢。 按照官方文檔先拉一下官方代碼庫,然后通過whl文件安裝,因為我是python3.1…

Vue3集成Element Plus完整指南:從安裝到主題定制下-實現后臺管理系統框架搭建

本文將詳細介紹如何使用 Vue 3 構建一個綜合管理系統,包括路由配置、頁面布局以及常用組件集成。 一、路由配置 首先,我們來看系統的路由配置,這是整個應用的基礎架構: import {createRouter, createWebHistory} from vue-rout…

【Oracle】創建公共數據連接

需求描述 兩個oracle數據庫,想從B數據庫創建視圖腳本訪問A數據庫相關表的數據,該怎么訪問呢? 解決方法 在Oracle數據庫中,創建公共數據庫鏈接(Public Database Link)可以允許數據庫中的任何用戶訪問遠程…

時序數據庫IoTDB的分片與負載均衡策略深入解析

一、引言 隨著數據庫服務的業務負載增加,擴展服務資源成為必然需求。擴展方式主要分為縱向擴展和橫向擴展。縱向擴展通過增加單臺機器的能力(如內存、硬盤、處理器)來實現,但受限于單臺機器的硬件能力。而橫向擴展則通過增加更多…

計算機網絡期末復習資料

我用夸克網盤分享了「計算機網絡」, 鏈接:https://pan.quark.cn/s/8aac2f0b840e 計算機網絡試題庫 1單項選擇題 1.1以下屬于物理層的設備是 ( A) A. 中繼器 B.以太網交換機 C. 橋 D. 網關 1.2在以太網中,是根據 (B) 地址來區分…

【IEEE 2025】低光增強KANT(使用KAN代替MLP)----論文詳解與代碼解析

【IEEE 2025】本文參考論文Enhancing Low-Light Images with Kolmogorov–Arnold Networks in Transformer Attention 雖然不是頂刊,但是有值得學習的地方 論文地址:arxiv 源碼地址:github 文章目錄 Part1 --- 論文精讀Part2 --- 代碼詳解形狀…

naivechain:簡易區塊鏈實現

naivechain:簡易區塊鏈實現 naivechain A naive and simple implementation of blockchains. 項目地址: https://gitcode.com/gh_mirrors/nai/naivechain 項目介紹 naivechain 是一個簡單且易于理解的區塊鏈實現項目。它使用 Go 語言編寫,以極簡…

Zabbix開源監控的全面詳解!

一、zabbix的基本概述 zabbix,這款企業級監控軟件,能全方位監控各類網絡參數,確保企業服務架構的安全穩定運行。它提供了靈活多樣的告警機制,幫助運維人員迅速發現并解決問題。此外,zabbix還具備分布式監控功能&#…

軟考軟件評測師——軟件工程之開發模型與方法

目錄 一、核心概念 二、主流模型詳解 (一)經典瀑布模型 (二)螺旋演進模型 (三)增量交付模型 (四)原型驗證模型 (五)敏捷開發實踐 三、模型選擇指南 四…

50天50個小項目 (Vue3 + Tailwindcss V4) ? | Blurry Loading (毛玻璃加載)

📅 我們繼續 50 個小項目挑戰!—— Blurry Loading 組件 倉庫地址:https://github.com/SunACong/50-vue-projects 項目預覽地址:https://50-vue-projects.vercel.app/ ? 組件目標 實現一個加載進度條,隨著加載進度的…

WPF性能優化之延遲加載(解決頁面卡頓問題)

文章目錄 前言一. 基礎知識回顧二. 問題分析三. 解決方案1. 新建一個名為DeferredContentHost的控件。2. 在DeferredContentHost控件中定義一個名為Content的object類型的依賴屬性,用于承載要加載的子控件。3. 在DeferredContentHost控件中定義一個名為Skeleton的ob…

VLM-MPC:自動駕駛中模型預測控制器增強視覺-語言模型

《VLM-MPC: Model Predictive Controller Augmented Vision Language Model for Autonomous Driving》2024年8月發表,來自威斯康星大學的論文。 受視覺語言模型(VLM)的緊急推理能力及其提高自動駕駛系統可理解性的潛力的啟發,本文…

推薦系統里真的存在“反饋循環”嗎?

推薦系統里真的存在“反饋循環”嗎? 許多人說,推薦算法不過是把用戶早已存在的興趣挖掘出來,你本來就愛聽流行歌、買潮牌玩具,系統只是在合適的時間把它們端到你面前,再怎么迭代,算法也改變不了人的天性&a…