Linux实现进度条小程序(包含基础版本和模拟下载过程版本)(上)

简介: Linux实现进度条小程序(包含基础版本和模拟下载过程版本)

Linux实现进度条小程序

1.预备的两个小知识

usleep这个函数的参数是微秒数,作用是让程序休眠对应的微秒数

1秒=1000毫秒

1毫秒=1000微秒

1微妙=1000纳秒

等等等等

因此下面的代码中的

usleep(1000000)=1秒

1.缓冲区

1.缓冲区概念的引出

首先,先让大家看两份代码,分析一下为什么出现这种情况?

请注意:这个代码的运行情况是:先打印的hello world,后休眠了1秒

然后我改动了一个地方,把那个’\n’去掉了

请注意:

这个代码的运行情况是:先休眠了一秒,然后才打印出hello world

为什么会这样呢?

2.缓冲区的概念

注意:程序结束时会自动刷新缓冲区,把缓冲区当中的数据打印出来

此时我们发现,这个代码的hello world就成功地在休眠之前打印出来了

2.回车与换行

1.小例子

其实,回车和换行是不同的

有什么不同呢

比方说:

你现在是一个高中生,你在上作文课,老师要求大家去写一篇作文

你就在作文纸上面去写,你的笔尖就相当于显示器上的光标

你的作文纸就相当于这个显示器

当你写完一段之后,你的笔尖下移:就像这样

光标只进行下移这一个操作,这就叫做:换行

但是真正写作文的时候,我们肯定不能只换行,我们一定要再让笔尖(光标)移动到当前行的最开始处然后再去写(这里不纠结新开一个段落要空两个格),就像这样:

第二个操作我们叫做回车

但是呢,我们的电脑上面的回车键其实完成了两个工作:换行+回车

在我们的旧一些的键盘上回车键就是这么标明的:

其实我们C语言当中的’\n’也是完成了这两个任务:换行+回车

所以我们在日常生活中几乎不会深究这两个概念的区别

那么C语言中有没有回车呢?

当然有啦:‘\r’

不过请注意: '\r’无法自动刷新缓冲区,因此我们需要用刚才提到的fflush库函数来刷新缓冲区

2.倒计时小程序

其实有了上面那两个概念之后,我们就能够写出一个倒计时小程序来了

那应该怎么写呢?

于是我们就可以写出这样的代码

我期待的是10 -> 9 -> 8 …-> 1 -> 0

结果是: 10 -> 90 -> 80 …-> 10 ->00

为什么会出现这种情况呢?

其实我们的显示器是并不会给我们直接打印10这个数字的

而是先打印字符’1’,然后打印字符’0’

连在一起之后我们就会认为那是10

也就是说我们的这个倒计时的过程其实是这样的

每次我们覆盖上一个数据只是覆盖了第一个字符’1’而已

第二个字符’0’一直都没有被覆盖

那我们应该怎么办呢?

我们知道printf是可以控制输出格式的

printf("%2d\r",count);
这样就可以把那个'0'也给覆盖掉了

因此我们可以这样改动代码

倒计时是成功了,但是它这个数字却总是右对齐的,能不能让它左对齐呢?

当然可以啦

只需要加一个-即可

printf("%-2d\r",count);
这样就可以左对齐了

这样我们的倒计时就大功告成了

相关文章
|
3月前
|
Ubuntu Linux
查看Linux系统架构的命令,查看linux系统是哪种架构:AMD、ARM、x86、x86_64、pcc 或 查看Ubuntu的版本号
查看Linux系统架构的命令,查看linux系统是哪种架构:AMD、ARM、x86、x86_64、pcc 或 查看Ubuntu的版本号
713 3
|
2天前
|
安全 Linux 虚拟化
|
12天前
|
Kubernetes Linux 测试技术
|
2月前
|
Linux 编译器 开发工具
快速在linux上配置python3.x的环境以及可能报错的解决方案(python其它版本可同样方式安装)
这篇文章介绍了在Linux系统上配置Python 3.x环境的步骤,包括安装系统依赖、下载和解压Python源码、编译安装、修改环境变量,以及常见安装错误的解决方案。
85 1
|
30天前
|
Java Linux Maven
用sdkman在linux上管理多个java版本
本文介绍了如何在Linux上使用SDKMAN来管理多个Java版本,包括安装SDKMAN、验证安装、列出和安装不同版本的JDK、Maven和Gradle,以及如何切换使用不同版本。
27 0
|
2月前
|
安全 Linux API
关于Linux稳定版本的一切你想知道的内容 【ChatGPT】
关于Linux稳定版本的一切你想知道的内容 【ChatGPT】
|
2月前
|
Linux 编译器 C语言
Linux内核对GCC版本的检测
Linux内核对GCC版本的检测
|
19天前
|
移动开发 小程序 数据可视化
基于npm CLI脚手架的uniapp项目创建、运行与打包全攻略(微信小程序、H5、APP全覆盖)
基于npm CLI脚手架的uniapp项目创建、运行与打包全攻略(微信小程序、H5、APP全覆盖)
138 3
|
26天前
|
小程序 API
微信小程序更新提醒uniapp
在小程序开发中,版本更新至关重要。本方案利用 `uni-app` 的 `uni.getUpdateManager()` API 在启动时检测版本更新,提示用户并提供立即更新选项,自动下载更新内容,并在更新完成后重启小程序以应用新版本。适用于微信小程序,确保用户始终使用最新版本。以下是实现步骤: ### 实现步骤 1. **创建更新方法**:在 `App.vue` 中创建 `updateApp` 方法用于检查小程序是否有新版本。 2. **测试**:添加编译模式并选择成功状态进行模拟测试。
39 0
微信小程序更新提醒uniapp
|
3月前
|
小程序 前端开发 Java
SpringBoot+uniapp+uview打造H5+小程序+APP入门学习的聊天小项目
JavaDog Chat v1.0.0 是一款基于 SpringBoot、MybatisPlus 和 uniapp 的简易聊天软件,兼容 H5、小程序和 APP,提供丰富的注释和简洁代码,适合初学者。主要功能包括登录注册、消息发送、好友管理及群组交流。
100 0
SpringBoot+uniapp+uview打造H5+小程序+APP入门学习的聊天小项目