Linux:进度条编写

前置知识

回车与换行

换行就是相当于vim中的命令模式的j。让光标直接向下一行。

回车则是相当于vim中的^,回到行头。

因此像c语言中的\n其实执行了回车与换行两个动作

缓冲区

讲缓冲区概念前,我们先编写一个简单的程序:

简单运行一下:

当然没什么问题。

这时候我们再将\n去掉看看效果:


这时候我们竟然是先休眠再打印,莫非是先执行sleep再执行printf?

答案是必不可能,c语言一定是从上至下执行语句的。

根本原因是,printf确实执行完毕了,但是放在内存的缓冲区当中。

只有当缓冲区刷新的时候,内容才会打印到屏幕上。

缓冲区在以下几种情况下会刷新:

  1. \n
  2. 缓冲区满了
  3. 程序结束
  4. fflush强制刷新

fflush

fflush是c语言中一个函数,我们来man一下看看其成分:

注意到,fflush传入的参数是FILE *stream

这时我们就又要提到一个小知识了,c语言会默认帮我们打开三个文件流:stdin、stdout、stderr。

前者是键盘,后两者是显示器。

因此我们传入stdout即可刷新缓冲区:

完美达到效果了呢!

倒计时

有了前面的知识储备,我们可以先写一个简单的倒计时程序来练练手:

效果如下:

amazing ah!

进度条

好了,现在开始正式进入我们的进度条编写。

首先我们先创建所需的文件:Proccess.c Proccess.h Main.c makefile

首先我们要明确一下进度条使用的场景,像下载情景。当然我们现在还未接触网络,因此可以模拟一个下载场景:

那么现在我们只需要实现一个简易的进度条即可:

来尝试简单调用一下:


完美依照预期进行了

颜色优化

我们打印的这个进度条多少有点简陋了,可以用一些颜色块代替:

效果如下:

相关推荐
十日十行9 小时前
Linux和window共享文件夹
linux
木心月转码ing16 小时前
WSL+Cpp开发环境配置
linux
崔小汤呀2 天前
最全的docker安装笔记,包含CentOS和Ubuntu
linux·后端
何中应2 天前
vi编辑器使用
linux·后端·操作系统
何中应2 天前
Linux进程无法被kill
linux·后端·操作系统
何中应2 天前
rm-rf /命令操作介绍
linux·后端·操作系统
何中应2 天前
Linux常用命令
linux·操作系统
葛立国2 天前
从 / 和 /dev 说起:Linux 文件系统与挂载点一文理清
linux
哇哈哈20212 天前
信号量和信号
linux·c++
不是二师兄的八戒2 天前
Linux服务器挂载OSS存储的完整实践指南
linux·运维·服务器