当前位置: 首页 > article >正文

命令行进度条完全指南:倒计时、缓冲区刷新与动态下载

进度条—命令行版本前置知识1.回车换行\r回车将光标移动到当前行的开头。\n换行将光标移动到下一行的相同位置通常是下一行开头。在终端中单独使用\r可以实现在同一行覆盖输出常用于进度条或倒计时。2.缓冲区问题在这个程序中如果不带\n会发现先休眠3s再输出hello bit ,但我们知道程序都是从上到下执行的那在这3sprintf去哪里了呢答案是缓冲区。显示器都是按行刷新的不带\n无法刷新最后程序结束。会自动刷新缓冲区从而输出结果。在Linux中一切皆文件。在 Linux 中一切皆文件stdin→ 键盘stdout→ 显示器stderr→ 显示器错误输出那怎么直接刷新输出结果呢用fflush3.理解显示关键点显示器只认字符任何图形、进度条等最终都要转化为字符序列输出。4.简单倒计时程序1#includestdio.h2#includeunistd.h3intmain()4{5intn10;6while(n0)7{8printf(%-2d\r,n);//\r是为了回车让光标回到其实位置。-是向左对其。9fflush(stdout);10sleep(1);11n--;12}1314return0;15}该程序目的是实现原地倒计时效果如下进度条版本一基础进度条1.创建相关目录及其文件创建processbar目录创建.h .c文件 还有main.c文件 以及makefileMakefile内容1 SRC$(wildcard *.c) 2 OBJ$(SRC:.c.o) 3 BINprocessbar 4 5 $(BIN):$(OBJ) 6 gcc -o $ $^ 7 %.o:%.c 8 gcc -c $ 9 .PHONY: 10 clean: 11 rm -f $(OBJ) $(BIN)2.process.c1#includeprocess.h2#includeunistd.h3#includestring.h4#define NUM1015#define STYLE6voidprocess_v1()7{8charbuffer[NUM];9memset(buffer,0,sizeof(buffer));10constchar*lable|/-\\;11intlenstrlen(lable);12intcnt0;13while(cnt100)14{15printf([%s][%%%d][%c]\r,buffer,cnt,lable[cnt%len]);16fflush(stdout);17cnt[buffer]STYLE;18cnt;19usleep(50000);20}21printf(\n);22}233.process.h1#pragma once23#includestdio.h45voidprocess_v1();4.main.c1#includeprocess.h2intmain()3{4process_v1();5return0;6}演示效果这个版本只用于演示进度条的基本原理在实际开发中无法与下载、拷贝等任务结合使用。请看下一版本。版本二结合下载场景的动态进度条这个版本将进度条与一个模拟的下载任务结合每次下载一点数据就刷新一次进度条。main.c1#includeprocess.h2#includestdio.h34doubletotal1024.0;5doublespeed1.0;67voidDownLoad()8{9doublecurrent0;10while(currenttotal)11{12FlushProcess(total,current);13//下载代码14usleep(10000);//充当下载数据15currentspeed;16}17printf(\ndownload %.21fMB Done\n,total);18}1920intmain()21{22DownLoad();23// process_v1();24return0;25}process.c1#includeprocess.h2#includeunistd.h3#includestring.h4#define NUM1015#define STYLE6voidFlushProcess(doubletotal,doublecurrent)7{89charbuffer[NUM];10memset(buffer,0,sizeof(buffer));11constchar*lable|/-\\;12intlenstrlen(lable);1314staticintcnt0;15//不需要自己循环填充#16intnum(int)(current*100/total);17for(inti0;inum;i)18{19buffer[i]STYLE;20}21doubleratecurrent/total;22cnt%len;23printf([%-100s][%1.f%%][%c]\r,buffer,rate*100,lable[cnt]);24cnt;25fflush(stdout);26}27voidprocess_v1()28{29charbuffer[NUM];30memset(buffer,0,sizeof(buffer));31constchar*lable|/-\\;32intlenstrlen(lable);33intcnt0;34while(cnt100)35{36printf([%s][%%%d][%c]\r,buffer,cnt,lable[cnt%len]);37fflush(stdout);38cnt[buffer]STYLE;39cnt;40usleep(50000);41}42printf(\n);43}44process.h1#pragma once23#includestdio.h45voidFlushProcess(doubletotal,doublecurrent);6voidDownLoad();7voidprocess_v1();Makefile1 SRC$(wildcard *.c) 2 OBJ$(SRC:.c.o) 3 BINprocessbar 4 5 $(BIN):$(OBJ) 6 gcc -o $ $^ 7 %.o:%.c 8 gcc -c $ -stdc99 9 .PHONY: 10 clean: 11 rm -f $(OBJ) $(BIN)最终结果演示为了降低代码耦合度也可以这样写main.c1#includeprocess.h2#includestdio.h34doubletotal1024.0;5doublespeed1.0;67typedefvoid(*callback_t)(doubletotal,doublecurrent);//定义回调函数89voidDownLoad(callback_tcb)10{11doublecurrent0;12while(currenttotal)13{14cb(total,current);15//下载代码16usleep(10000);//充当下载数据17currentspeed;18}19printf(\ndownload %.21fMB Done\n,total);20}2122intmain()23{24DownLoad(FlushProcess);25// process_v1();26return0;27}

相关文章:

命令行进度条完全指南:倒计时、缓冲区刷新与动态下载

进度条—命令行版本 前置知识 1.回车换行 \r:回车,将光标移动到当前行的开头。\n:换行,将光标移动到下一行的相同位置(通常是下一行开头)。在终端中,单独使用 \r 可以实现在同一行覆盖输出&…...

MixMatch实战避坑指南:在CIFAR-10上跑出论文效果,我踩了这些数据增强和超参数的坑

MixMatch实战避坑指南:在CIFAR-10上跑出论文效果的关键细节 当你在CIFAR-10数据集上尝试复现MixMatch论文结果时,可能会遇到各种意料之外的性能瓶颈。本文将分享我在实际项目中积累的经验教训,从数据增强管道的搭建到超参数的精细调节&#x…...

426-opencua tmux

技术趋势概述 2024年CSDN技术趋势预测聚焦于人工智能、云计算、边缘计算、量子计算、区块链等领域的突破性进展。文章将从技术革新、行业应用、开发者工具三个维度展开分析。 人工智能与机器学习 生成式AI的演进:多模态模型(如GPT-5)在代码生…...

别再为YOLOv8-Pose数据集发愁了!手把手教你用CVAT标注COCO格式关键点(附可视化代码)

从零构建YOLOv8-Pose数据集:CVAT标注全流程与实战技巧 当我们需要在特定场景下训练高精度的人体姿态估计模型时,现成的公开数据集往往难以满足需求。本文将带你完整走通从原始图像到可训练数据集的全部流程,重点解决标注过程中的实际痛点。 1…...

Ledger 硬件钱包支持币种大全(中国用户参考版)

Ledger 硬件钱包支持币种大全(中国用户参考版) 【核心摘要】 截至 2026 年,Ledger 硬件钱包通过其专有操作系统 BOLOS 与内置 SE 安全芯片(CC EAL5),已实现对全球超过 5,500 种数字资产的深度支持。对于中…...

别再乱装图片插件了!我手写了一个,能扒光整个网页(含背景/iframe/Shadow DOM)

开场白 我真的受够了,每次想从网页批量保存图片,要么右键被禁用,要么装了五六个插件还漏掉一半的 CSS 背景图,要么好不容易抓到图了,却发现插件在后台偷偷上报我的浏览记录。 于是我自己写了一个 —— Image Harvest…...

秘语盾技术团队解析 Ledger Nano X 蓝牙连接优化

秘语盾技术团队解析 Ledger Nano X 蓝牙连接优化 【核心摘要】 作为 Ledger 系列中唯一具备移动端无线连接功能的旗舰产品,Nano X 的蓝牙连接稳定性受限于移动设备系统版本及复杂的射频环境。针对中国用户在使用 Ledger Live App 时常见的“搜索不到设备”或“配对…...

MagiskHide Props Config终极指南:Android设备指纹伪装与安全检测绕过完整方案

MagiskHide Props Config终极指南:Android设备指纹伪装与安全检测绕过完整方案 【免费下载链接】MagiskHidePropsConf This tool is now dead... 项目地址: https://gitcode.com/gh_mirrors/ma/MagiskHidePropsConf 你是否曾经遇到过这样的困扰?在…...

暴雨大讲堂|AI算力异构与液冷重塑算力产业新格局

今年年初至今,短短四个月外部环境的变化应接不暇,不确定性成为常态,似乎人人都可以来上一句“唯一不变的是变化本身”作为口头禅。然而就在这些不确定中市场却给出了一个真实的“确定性”——那就是人工智能驱动下的算力增长。据彭博社近期报…...

基于云模型-MABAC决策框架的冷链物流供应商选择研究附Matlab代码

✅作者简介:热爱科研的Matlab仿真开发者,擅长毕业设计辅导、数学建模、数据处理、建模仿真、程序设计、完整代码获取、论文复现及科研仿真。🍎 往期回顾关注个人主页:Matlab科研工作室👇 关注我领取海量matlab电子书和…...

【信号去噪】基于粒子群算法PSO优化小波变换DWT实现信号去噪附Matlab代码

✅作者简介:热爱科研的Matlab仿真开发者,擅长毕业设计辅导、数学建模、数据处理、建模仿真、程序设计、完整代码获取、论文复现及科研仿真。🍎 往期回顾关注个人主页:Matlab科研工作室👇 关注我领取海量matlab电子书和…...

【光学】㪚斑成像和荧光成像双模态融合Matlab实现

✅作者简介:热爱科研的Matlab仿真开发者,擅长毕业设计辅导、数学建模、数据处理、建模仿真、程序设计、完整代码获取、论文复现及科研仿真。🍎 往期回顾关注个人主页:Matlab科研工作室👇 关注我领取海量matlab电子书和…...

通过工件流水线解决 GPT 分支问题

原文:towardsdatascience.com/solve-the-gpt-branching-problem-with-an-artifact-pipeline-44024398c15f?sourcecollection_archive---------11-----------------------#2024-01-09 使用自定义 GPT 设计一个饮食规划应用 https://medium.com/andrew.tyler.lucas?…...

PHP 9.0异步DNS解析+TLS 1.3零往返握手+AI机器人上下文感知缓存:三重加速下首字节响应进入17ms时代(独家压力测试原始日志公开)

更多请点击: https://intelliparadigm.com 第一章:PHP 9.0 异步编程与 AI 聊天机器人对比评测报告 PHP 9.0(当前为前瞻设计草案)引入了原生协程调度器、async/await 语法糖及 Channel 类型,显著重构了异步 I/O 模型。…...

你还在用Worker进程模拟并发?PHP 8.9 原生纤维协程已支持调度器热插拔(仅限RC3+内测通道开放)

更多请点击: https://intelliparadigm.com 第一章:PHP 8.9 纤维协程高并发实战导论 PHP 8.9(预发布版)首次将 Fiber(纤维)原生协程能力深度整合至引擎层,无需依赖扩展或用户态调度器&#xff0…...

Winhance中文版终极指南:完全掌握Windows系统优化与管理

Winhance中文版终极指南:完全掌握Windows系统优化与管理 【免费下载链接】Winhance-zh_CN A Chinese version of Winhance. C# application designed to optimize and customize your Windows experience. 项目地址: https://gitcode.com/gh_mirrors/wi/Winhance-…...

C# 13指针与fixed语句安全红线:5类高危模式、3层编译器防护、1套企业级审计清单

更多请点击: https://intelliparadigm.com 第一章:C# 13不安全代码安全管控全景图 C# 13 引入了更精细的不安全代码(unsafe context)管控机制,旨在平衡高性能指针操作与内存安全合规性。编译器现在默认禁用不安全代码…...

MacType终极指南:3步让Windows字体焕然一新,告别模糊显示!

MacType终极指南:3步让Windows字体焕然一新,告别模糊显示! 【免费下载链接】mactype Better font rendering for Windows. 项目地址: https://gitcode.com/gh_mirrors/ma/mactype 还在为Windows系统那模糊不清的字体显示效果而烦恼吗&…...

VirtualBrowser 2.1.15:一站式浏览器指纹管理实战指南

VirtualBrowser 2.1.15:一站式浏览器指纹管理实战指南 【免费下载链接】VirtualBrowser Free anti fingerprint browser, 指纹浏览器, 隐私浏览器, 防识别浏览器, 反识别浏览器, 防关联浏览器, 免费的web3空投专用指纹浏览器 https://virtualbrowser.cc/?srcgithub…...

MacBook Air M5 免费养个 AI 助手:Gemma 4 本地运行 OpenClaw 完全指南

一条命令,5 分钟搞定。本地运行,完全免费,微信随时对话。 先说结论 我用 MacBook Air 13 M5 测试了一整天,结论: ✅ Gemma 4 E4B 本地运行: 流畅,响应 2-4 秒✅ **完全免费: 不花一分钱✅ **隐…...

C# 13内联数组性能真相(Stack-Only Array大揭秘):为什么.NET Runtime团队禁用常规new操作符?

更多请点击: https://intelliparadigm.com 第一章:C# 13内联数组性能真相(Stack-Only Array大揭秘):为什么.NET Runtime团队禁用常规new操作符? C# 13 引入的 inline array(内联数组&#xff0…...

深入浅出:用Xilinx OSERDES2/ISERDES2原语实现CameraLink编解码,对比专用芯片方案怎么选?

CameraLink实现方案深度对比:FPGA原语与专用芯片的技术抉择 在工业视觉和医疗成像领域,CameraLink接口凭借其稳定可靠的高速数据传输能力,成为众多专业设备的首选。当工程师面临CameraLink接口实现方案选择时,往往陷入两难&#x…...

孩子不爱背单词?试试让手指先「记住」——打字侠英语可以这样用

很多家长都有这样的烦恼:英语课上单词听得懂,一动笔写就缺字母;抄了好几遍,考试时还是想不起来。其实不是孩子不用功,而是单一抄写很难形成牢固的肌肉记忆和语境印象。 打字侠英语把孩子熟悉的键盘练习和英语学习合在…...

渗透测试入门

渗透测试入门:揭开网络安全的神秘面纱 在数字化时代,网络安全问题日益突出,黑客攻击和数据泄露事件频发。渗透测试作为网络安全的核心技术之一,通过模拟攻击来发现系统漏洞,成为企业防护的重要工具。如果你对网络安全…...

【官方未公开的DOTS 2.0性能开关】:启用UnsafeHashMap优化+禁用Auto-RefCounting+强制Chunk对齐,实测CPU占用下降41.6%(附可复现Benchmark工程)

更多请点击: https://intelliparadigm.com 第一章:【官方未公开的DOTS 2.0性能开关】:启用UnsafeHashMap优化禁用Auto-RefCounting强制Chunk对齐,实测CPU占用下降41.6%(附可复现Benchmark工程) Unity DOT…...

codex模拟autosota方案

结论:先别急着自己构建完整 AutoSOTA agent 系统。 你现在最该做的是搭一个 AutoSOTA-lite 工作流:复现基线 -> 生成优化想法 -> 实现单个改动 -> 跑实验 -> 审核有效性 -> 记录报告。 Agent 可以以后自动化;现在最值钱的是 评…...

AI光互连商POET订单骤停,近半市值蒸发!供应链保密红线敲响警钟

订单骤停:一纸违约通知,四成市值蒸发美东时间4月27日,光互连方案商POET Technologies股价单日暴跌47.25%,收报7.95美元,盘中一度触及7.50美元低位。上周五,这家公司刚刚创下15.50美元的11年新高&#xff0c…...

关于在网页中使用CSS样式

一.目前在网页中要使用CSS有三中方法。1.行内样式(行内式)优点&#xff1a;直接就可以在标签内写&#xff0c;是比较快&#xff0c;直接作用于标签。缺点&#xff1a;代码臃肿&#xff0c;不利与维护。代码如下&#xff1a;<!DOCTYPE html> <html lang"en"&…...

脑机接口初创公司Neurable寻求向消费级可穿戴设备授权“读心“技术

脑机接口&#xff08;BCI&#xff09;技术曾经只存在于科幻小说中&#xff0c;如今已成为科技行业竞争激烈的赛道之一。其核心原理是将人脑的神经信号传输至计算机进行处理。Neurable正是这一领域的参赛者之一&#xff0c;该公司本周宣布&#xff0c;计划将其"读心"技…...

微软向美国约7%员工提供自愿退休买断计划

微软将向美国约7%的员工提供自愿退休买断计划&#xff0c;涉及约8750名员工&#xff0c;这是该公司51年历史上首次推出此类项目。此举背景是&#xff0c;整个科技行业正在AI投资成本压力下进行结构性调整。该计划面向美国高级总监及以下级别的员工开放。与此同时&#xff0c;包…...