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

进度条程序

目录

1.回车与换行

2.缓冲区

强制刷新:fflush 策略

3.倒计时程序

4.进度条

4.1先做一下基本的准备工作

4.2现在我们正式来实现

进度:

比率:

旋转光标  表明动态变化:

4.3如果我们要完成一个下载任务

4.3.1实现:

4.3.2光标显示:

4.3.2.1证明一下,比率不变,但是光标还是在旋转

4.3.3网速是时快时慢的,进度条的更新进度也应该是时快时慢的

4.3.3.1我们可以定义一下网速的清单来做这个实验

4.3.3.2更完美:


1.回车与换行

回车:创建新的段落,文本内容会从新的一行开始      \r

换行:在同一段洛内进行换行,不创建新的段落         \n

2.缓冲区

带\n

\n  往显示器上写入  表示立即执行,数据立即显示

不带\n

从上向下执行

先执行printf再执行sleep

但是现象却是先sleep两秒再打印

所以我们sleep期间已经执行的printf字符串在哪里?

在缓冲区(我们当成一块内存空间)

缓冲区是给显示器提供的

有缓冲区就必然存在刷新策略:

显示器的刷新策略--> 行刷新 --> 如果打印的字符串包含\n,就会立即显示到显示器上,如果不包含,该字符串不做刷新,要么程序结束刷新,要么我们强制刷新

强制刷新:fflush 策略

在进行printf打印的时候,默认会打开文件的三个输入输出流

这样就可以立即刷新了


3.倒计时程序

\r 回到最开始

把数据显示,我们要刷新,因为我们不是\n,数字会在缓冲区一直不被更新,所有不会打印

我们就需要强制刷新

两位数的倒计时时,-2d 让倒计时到个位数时,有空格,同时空格在右边(因为不足两位时,默认是右对齐的)

4.进度条

4.1先做一下基本的准备工作

创建一个新的目录

创建三个文件,并写入内容

再把Makefile文件拷贝到当前路径

4.2现在我们正式来实现

进度:

比率:

旋转光标  表明动态变化:

4.3如果我们要完成一个下载任务

4.3.1实现:

4.3.2光标显示:

也有可能在下载但是进度不变(比率不更新),通过光标显示还在下载

定义了一个static变量,想让这个变量一直有效

index不能让他越界

4.3.2.1证明一下,比率不变,但是光标还是在旋转

这里改一下

ctrl+c 强制退出

4.3.3网速是时快时慢的,进度条的更新进度也应该是时快时慢的

4.3.3.1我们可以定义一下网速的清单来做这个实验

下多个文件也是可以的

4.3.3.2更完美:

定义了一个函数指针类型

实现下载的逻辑进度条刷新逻辑通过函数指针结合

回调的方式进行进度刷新


http://www.kler.cn/a/405644.html

相关文章:

  • 【日志】盛趣面试
  • 飞桨大模型PaddleOCR
  • 【UE5】在材质中计算模型在屏幕上的比例
  • 【Web前端】实现基于 Promise 的 API:alarm API
  • Qt模块学习 —— 数据库连接
  • 残酷的现实
  • docker 配置同宿主机共同网段的IP 同时通过通网段的另一个电脑实现远程连接docker
  • JVM基本结构(详细)
  • 社团管理新策略:SpringBoot技术解析
  • .net的winfrom程序 窗体透明打开窗体时出现在屏幕右上角
  • 内嵌编辑器+AI助手,Wave Terminal打造终端新体验
  • logback动态获取nacos配置
  • 时间请求参数、响应
  • RNN并行化——《Were RNNs All We Needed?》论文解读
  • SQL 通配符
  • Java并发CountDownLatch:原理、机制与应用场景
  • 基于SpringBoot的在线教育系统【附源码】
  • bert的模型训练和使用情绪识别
  • 【大数据学习 | Spark】yarn-client与yarn-cluster的区别
  • eclipse-git项目提示NO-HEAD