【Linux】系统程序−进度条

文章目录

一、准备知识

在讲解进度条之前,先讲解几个概念

1.回车与换行

1.1 回车

回车:\r

作用:将光标移动到当前行的行首(水平回退,不换行)。

1.2 换行

换行:\n

作用:将光标移动到下一行的同一列(垂直移动,不回退)。

历史渊源:打字机时代,"回车"(Carriage Return)是让滚筒归位,"换行"(Line Feed)是推动纸张换行,两者需配合使用。

在 Windows 系统中,按下 Enter 键会产生回车(Carriage Return,\r)和换行(Line Feed,\n)两个动作,即 "\r\n" 组合。

2. 行缓冲区

先来看两个不同的现象:

有换行:

没有换行:

这种情况下,为什么"hello l1bo"不直接显示呢?没有显示,它去哪里了呢?
"hello l1bo" 没有消失,而是暂时存储在 stdout 的缓冲区中,直到程序结束才被刷新到屏幕。

缓冲区的刷新策略是行刷新,需要 \n 或手动刷新来触发显示。

如果想让"hello l1bo"立即显示,需要强制刷新缓冲区

c 复制代码
#include <stdio.h>
#include <unistd.h>
int main() {
    printf("hello l1bo");
    fflush(stdout);  // 强制刷新缓冲区
    sleep(2);
    return 0;
}

3. 倒计时程序

每次输入后,光标都会移动到下一个位置

如果我们输入完一个数字后把光标回到原来位置,再次输入,重复上面的动作,也就可以形成倒计时小程序了。其实就是利用\r回车实现。

版本1:不复原光标位置

版本2:不强制刷新

版本3:

优化:

版本4:两位数字倒计时

优化:
%-2d-表示左对齐,2表示占两个字符位置

二、进度条程序

1. 版本1

实现以下基本功能,只展示进度条基本功能,后面还有V2版本。

第一步:创建一个process目录用来存放代码,并且把之前的Makefile文件拷贝到process目录中来,可以修改一下Makefile的可执行程序名称,不想改也可以不改。

第二步:创建process.h, process.c, main.c这三个文件
process.h写函数声明,process.c写函数实现,main.c

第三步:初步填写代码


相关推荐
码农小韩1 小时前
基于Linux的C++学习——指针
linux·开发语言·c++·学习·算法
wdfk_prog1 小时前
[Linux]学习笔记系列 -- [fs]seq_file
linux·笔记·学习
Jay Chou why did2 小时前
wsl安装完无法进入wsl
linux
石头5303 小时前
Rocky Linux 9.6 docker k8s v1.23.17 kubeadm 高可用部署文档
linux
松涛和鸣3 小时前
49、智能电源箱项目技术栈解析
服务器·c语言·开发语言·http·html·php
凉、介3 小时前
SylixOS 中的 Unix Socket
服务器·c语言·笔记·学习·嵌入式·sylixos
RisunJan3 小时前
Linux命令-ipcs命令(报告进程间通信(IPC)设施状态的实用工具)
linux·运维·服务器
春日见4 小时前
控制算法:PP(纯跟踪)算法
linux·人工智能·驱动开发·算法·机器学习
HABuo4 小时前
【Linux进程(四)】进程切换&环境变量深入剖析
linux·运维·服务器·c语言·c++·ubuntu·centos