Linux实现:从倒计时到进度条

文章目录

  • 1.回车与换行
  • 2.缓冲区的概念
  • 3.倒计时
  • 4.进度条(第一版无应用场景)
  • 5.进度条(第二版有应用场景)


1.回车与换行

在这里插入图片描述

2.缓冲区的概念

在这里插入图片描述
强制刷新可以使用冲刷函数fflush

#include <stdio.h>
#include <unistd.h>
int main()
{printf("I am a \nhandsome man!");fflush(stdout);sleep(3);return 0;
}

这样就可以强制刷新出来了!

3.倒计时

在这里插入图片描述

 1 #include <stdio.h>2 #include <unistd.h>3 4 int main()5 {6   int cnt=10;7   while(cnt>=0)8   {9     printf("%2d\r",cnt);10     fflush(stdout);11     cnt--;12     sleep(1);13   }                                                                         14   printf("\n");15   return 0;16 17 }

4.进度条(第一版无应用场景)

大制作一个这个样子的进度条:
在这里插入图片描述
在这里插入图片描述

#include <string.h>
#include <unistd.h>
#include <stdio.h>#define Length 101
#define style '#'const char* lable = "|/-\\";//两个\\表'\'符号,因为\n,\r有其他意思
void procbar()
{char bar[Length];memset(bar, '\0', sizeof(bar));int len = strlen(lable);int cnt = 0;while (cnt <= 100){printf("[%-100s][%d%%][%c]\r", bar,cnt,lable[cnt%len]);//100s从左向右打印(默认右对齐),-100s即为左对齐、、lable[cnt%len]防止越界fflush(stdout);bar[cnt] = style;cnt++;usleep(20000);}printf("\n");
}int main()
{	procbar();return 0;
}

5.进度条(第二版有应用场景)

我们的进度条不可能像第一版一样光一个进度条在那跑。
肯定是有相关场景的,比如要下载文件大小多少,带宽多少。。等等

源码:
在这里插入图片描述
makefile:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
processbar.c

#define _CRT_SECURE_NO_WARNINGS 1
#include "processbar.h"
#include <string.h>
#include <Windows.h>#define Length 101
#define style '#'const char* lable = "|/-\\";//两个\\表'\'符号,因为\n,\r有其他意思
//第一版本
//void procbar()
//{
//	char bar[Length];
//	memset(bar, '\0', sizeof(bar));
//	int len = strlen(lable);
//	int cnt = 0;
//	while (cnt <= 100)
//	{
//		printf("[%-100s][%d%%][%c]\r", bar,cnt,lable[cnt%len]);//100s从左向右打印(默认右对齐),-100s即为左对齐、、lable[cnt%len]防止越界
//		fflush(stdout);
//		bar[cnt] = style;
//		cnt++;
//		Sleep(1);//这里要改
//	}
//	printf("\n");
//}//第二版本
void procbar(double total, double current)
{char bar[Length];memset(bar, '\0', sizeof(bar));int len = strlen(lable);int cnt = 0;double rate= (current * 100.0) / total;int loop_count = (int)rate;//将文件大小换算为百分比制,不乘100.0的话算下来是一个小数,取整就恒为0了while (cnt <= loop_count){bar[cnt] = style;cnt++;Sleep(1);}printf("[%-100s][%.1lf%%][%c]\r", bar, rate, lable[cnt % len]);//100s从左向右打印(默认右对齐),-100s即为左对齐、、lable[cnt%len]防止越界fflush(stdout);//printf("\n");
}

main.c

#define _CRT_SECURE_NO_WARNINGS 1
#include "processbar.h"
#include<Windows.h>
double filesize = 100 * 1024 * 1024;//第一个1024是字节,1024*1024是1M,这个大小总共是100Mvoid download()
{double filesize = 100 * 1024 * 1024 * 1.0;double current = 0.0;//累计下载的数据量double bandwidth = 1024 * 1024*1.0;//带宽printf("下载开始,当前进程为:%lf\n", current);while (current <= filesize){procbar(filesize,current);//动态打印出任意时刻的进度条//从网络中获取数据current += bandwidth;Sleep(1);}printf("\n下载完成,下载大小为:%lf\n", filesize);
}int main()
{download();/*procbar(100.0,56.9);procbar(100.0, 99.9);		//这三个地方是指定下载到百分之多少procbar(100.0, 10.1);*/return 0;
}

processbar.h

#pragma once
#include <stdio.h>void procbar(double total, double current);

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/650941.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

排序(1)——直接插入排序、希尔排序

目录 一、直接插入排序 1.简介 2.思路与代码 3.复杂度与稳定性分析 &#xff08;1&#xff09;时间复杂度 &#xff08;2&#xff09;空间复杂度 &#xff08;3&#xff09;稳定性 二、希尔排序 1.简介 2.思路与代码 &#xff08;1&#xff09;分组排序 &#xff08…

系统架构设计师教程(十七)通信系统架构设计理论与实践

通信系统架构设计理论与实践 17.1 通信系统概述17.2 通信系统网络架构17.2.1局域网网络架构17.2.2 广域网网络架构17.2.3 移动通信网网络架构17.2.4存储网络架构17.2.5 软件定义网络架构17.3 网络构建关键技术17.3.1 网络高可用设计17.3.2 IPv4与IPv6融合组网技术17.3.3 SDN技术…

09. Springboot集成sse服务端推流

目录 1、前言 2、什么是SSE 2.1、技术原理 2.2、SSE和WebSocket 2.2.1、SSE (Server-Sent Events) 2.2.2、WebSocket 2.2.3、选择 SSE 还是 WebSocket&#xff1f; 3、Springboot快速集成 3.1、添加依赖 3.2、创建SSE控制器 3.2.1、SSEmitter创建实例 3.2.2、SSEmi…

macOS跨进程通信: Unix Domain Socket 创建实例

macOS跨进程通信: Unix Domain Socket 创建实例 一&#xff1a; 简介 Socket 是 网络传输的抽象概念。 一般我们常用的有Tcp Socket和 UDP Scoket&#xff0c; 和类Unix 系统&#xff08;包括Mac&#xff09;独有的 Unix Domain Socket&#xff08;UDX&#xff09;。 Tcp So…

Scratch:启蒙少儿编程的图形化魔法

在当今这个数字化时代&#xff0c;编程已经成为了一项重要的基础技能。就像学习阅读和写作一样&#xff0c;掌握编程能够打开通往未来世界的大门。对于孩子们来说&#xff0c;Scratch作为一种图形化编程语言&#xff0c;不仅简单有趣&#xff0c;而且非常适合作为编程学习的入门…

科技助力“双碳”:墨水屏电子桌牌在绿色办公中的作用

随着科技的发展&#xff0c;人们对绿色环境可持续发展也越来越重视&#xff0c;所以&#xff0c;我国在几年前&#xff0c;就提出了“双碳”政策&#xff08;即碳达峰与碳中和的简称。2020年9月中国明确提出2030年“碳达峰”与2060年“碳中和”目标&#xff09;&#xff0c;而作…

单调栈第二天(还没写完)

503.下一个更大元素II 力扣题目链接(opens new window) 给定一个循环数组&#xff08;最后一个元素的下一个元素是数组的第一个元素&#xff09;&#xff0c;输出每个元素的下一个更大元素。数字 x 的下一个更大的元素是按数组遍历顺序&#xff0c;这个数字之后的第一个比它更…

卸载软件Geek Uninstaller,MySQl安装不成功

最近刷最右的时候&#xff0c;看到两个帖子都是MySQl安装过程总是出现问题。大概两年前我也遇到了这个问题&#xff0c;推荐一款软件。 是因为在安装的过程之中&#xff0c;出现了问题。然后你再进行安装的时候&#xff0c;没有完全将原来安装的软件卸载掉&#xff0c;导致有注…

垃圾填埋气体监测与告警一体化环保监测5G云网关

数字化时代数据采集和传输我认为变得非常重要。为了满足这一需求&#xff0c;我们推出了一款具备多种功能的数据采集器。这款产品不仅集成了8DI干湿节点、4DO继电器、6AI电流/电压型传感器&#xff0c;还支持与多个云平台进行上行对接。通过这些功能&#xff0c;用户可以轻松实…

深入浅出理解目标检测的非极大值抑制(NMS)

一、参考资料 物体检测中常用的几个概念迁移学习、IOU、NMS理解 目标定位和检测系列&#xff08;3&#xff09;&#xff1a;交并比&#xff08;IOU&#xff09;和非极大值抑制&#xff08;NMS&#xff09;的python实现 Pytorch&#xff1a;目标检测网络-非极大值抑制(NMS) …

机器学习整理

绪论 什么是机器学习&#xff1f; 机器学习研究能够从经验中自动提升自身性能的计算机算法。 机器学习经历了哪几个阶段&#xff1f; 推理期&#xff1a;赋予机器逻辑推理能力 知识期&#xff1a;使机器拥有知识 学习期&#xff1a;让机器自己学习 什么是有监督学习和无监…

CubeMX生成工程文件夹解释

使用CubeMXKeil的工程&#xff0c;物理文件夹结构如下&#xff1a; 文件夹、文件&#xff0c;众多&#xff0c;但我们平时使用到的&#xff0c;主要是两个入口文件&#xff0c;即以下的&#xff1a;1和2. 1、***.uvprojx 位置&#xff1a;工程目录\MDK-ART文件夹下。 Keil的工…

【C++】STL和vector容器

STL和vector容器 基本概念六大组件容器算法迭代器容器算法迭代器 vector容器基本概念vector构造函数赋值vector的容量和大小vector插入与删除vector存取数据函数原型 vector互换容器vector预留空间vector容器嵌套容器 基本概念 长久以来&#xff0c;软件届一直希望建立一种可重…

基于 java+springboot+mybatis电影售票网站管理系统前台+后台设计和实现

基于 javaspringbootmybatis电影售票网站管理系统前台后台设计和实现 &#x1f345; 作者主页 央顺技术团队 &#x1f345; 欢迎点赞 &#x1f44d; 收藏 ⭐留言 &#x1f4dd; &#x1f345; 文末获取源码联系方式 &#x1f4dd; &#x1f345; 查看下方微信号获取联系方式 承…

国内首个!亚信安全获得CCRC数据分类分级产品认证证书

亚信安全信数数据分类分级系统AISDC V1.0&#xff0c;荣获中国网络安全审查认证和市场监管大数据中心颁发的首个数据分类分级产品IT产品信息安全认证证书&#xff01;标志着亚信安全在大数据安全领域的强大技术实力以及专业研究&#xff0c;正式获得国内数据分类分级产品评定的…

通过LiveNVR实现海康大华华为宇视等监控摄像头在服务器上录像存储,并web无插件直播和回放

支持云端录像服务器上面集中录像存储在部署LiveNVR的服务器上面 1、流媒体服务软件2、配置开启录像(云端录像)3、录像回看(云端录像)3.1、查看录像3.1.1、时间轴视图3.1.2、列表视图 4、云端录像相关接口5、如何分享时间轴录像回看&#xff1f;6、iframe集成示例7、RTSP/HLS/FL…

centos 7 增加临时路由及永久路由

centos 7 增加临时路由及永久路由 如果增加临时路由&#xff0c;要先安装net-tools , sudo yum install net-tools route add -net 10.1.0.0 gw 10.1.1.1 netmask 255.255.0.0 意思是增加了一条动态路由&#xff0c;网关10.1.1.1 ,10.1.x.x 的所有ip都走这个网关 此种方式&am…

[框架系列]-[通用lock框架]集成及具体配置使用

目录 一&#xff1a;框架集成 1.添加pom依赖 2.开启lock配置 二&#xff1a;配置详细介绍 1.配置清单 2.具体配置介绍 &#xff08;1&#xff09;implementer &#xff08;2&#xff09;type &#xff08;3&#xff09;transactionStrategy &#xff08;4&#xff09…

Dev-Home:又一个开发人员控制中心神器,微软官方出品!

前两周&#xff0c;微软针对开发人员推出的windows控制中心&#xff1a;Dev-Home&#xff0c;迎来了0.9的预览版&#xff0c;这次重点的更新是支持Window 10了&#xff0c;之前一直都只支持Windows 11。 Dev-Home核心有两个功能&#xff1a;系统监控小组件和Gtihub扩展小组件。…

ISO 14229和UDS:汽车诊断的黄金标准

UDS简介&#xff1a; UDS是Unified Diagnostic Services的缩写&#xff0c;全名统一诊断服务。它是一种用于汽车电子控制单元&#xff08;ECU&#xff09;之间进行诊断和通信的标准协议&#xff0c;属于ISO 14229标准的一部分。 UDS的起源和背景&#xff1a; UDS的起源可以追…