【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

第三步:初步填写代码


相关推荐
小成202303202652 小时前
Linux高级02
linux·开发语言
mounter6252 小时前
【硬核前沿】CXL 深度解析:重塑数据中心架构的“高速公路”,Linux 内核如何应对挑战?-- CXL 协议详解与 LSF/MM 最新动态
linux·服务器·网络·架构·kernel
++==3 小时前
Linux 进程间通信与线程同步技术详解:IPC 机制、线程 API、同步工具与经典同步问题
linux
特长腿特长3 小时前
centos、ubantu系列机的用户和用户组的结构是什么?具体怎么配置?用户组权限怎么使用?这篇文章持续更新,帮助你复习linux的基础知识
linux·运维·centos
zzzyyy5383 小时前
Linux环境变量
linux·运维·服务器
pluvium273 小时前
记对 xonsh shell 的使用, 脚本编写, 迁移及调优
linux·python·shell·xonsh
无级程序员3 小时前
centos7 安装 llvm-toolset-7-clang出错的问题解决
linux·centos
kebeiovo4 小时前
atomic原子操作实现无锁队列
服务器·c++
赛博云推-Twitter热门霸屏工具4 小时前
Twitter运营完整流程:从0到引流获客全流程拆解(2026)
运维·安全·自动化·媒体·twitter
CHHC18804 小时前
NetCore树莓派桌面应用程序
linux·运维·服务器