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

【Linux】系统程序−进度条

文章目录

  • 一、准备知识
    • 1.回车与换行
      • 1.1 回车
      • 1.2 换行
    • 2. 行缓冲区
    • 3. 倒计时程序
  • 二、进度条程序
  • 1. 版本1

一、准备知识

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

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"立即显示,需要强制刷新缓冲区

#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
在这里插入图片描述
第三步:初步填写代码
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述


文章转载自:
http://bookshelves.wkuuf.cn
http://anon.wkuuf.cn
http://baldheaded.wkuuf.cn
http://adverbial.wkuuf.cn
http://breather.wkuuf.cn
http://bodiless.wkuuf.cn
http://biostatics.wkuuf.cn
http://bathos.wkuuf.cn
http://abyssinian.wkuuf.cn
http://branchial.wkuuf.cn
http://angiography.wkuuf.cn
http://arcanum.wkuuf.cn
http://absinthin.wkuuf.cn
http://anthroposophy.wkuuf.cn
http://carthago.wkuuf.cn
http://bdsc.wkuuf.cn
http://chemomorphosis.wkuuf.cn
http://afterlight.wkuuf.cn
http://bemazed.wkuuf.cn
http://carpool.wkuuf.cn
http://bioresmethrin.wkuuf.cn
http://bladebone.wkuuf.cn
http://chlormadinone.wkuuf.cn
http://altogether.wkuuf.cn
http://arthrotomy.wkuuf.cn
http://benzedrine.wkuuf.cn
http://anastrophe.wkuuf.cn
http://chapeaubras.wkuuf.cn
http://acquisitive.wkuuf.cn
http://bta.wkuuf.cn
http://www.dtcms.com/a/212805.html

相关文章:

  • MySQ里的主从复制
  • 深入探索AI模型工程:算法三大门派与监督学习的魅力
  • python的pip怎么配置的国内镜像
  • 深入理解设计模式之装饰器模式
  • 网络段、主机段、子网掩码
  • 【网络安全】轻量敏感路径扫描工具
  • MySQL权限管理:层级化作用域、权限分类、操作命令
  • 5GC网络中的QoS Flow级QoS控制
  • Baklib领跑五款知识管理工具评测
  • 五窍排泄物的形成机制
  • 【JSON 】全面掌握JSON的相关知识
  • GitHub Copilot 现已支持 AI Coding Agent
  • 四、生活常识
  • Mysql 中的锁
  • 直流电机 pwm 调速
  • 人工智能数学基础实验(二):奇异值分解(SVD)-图像处理
  • LangChain4j 项目实战——idea快捷键搜索
  • Scratch游戏 | 枪战游戏
  • 自动化安全脚本学习
  • 动态规划(6)下降路径最小值
  • C++ gtest单元测试
  • golang逃逸分析
  • AI 集成
  • C/C++ 结构体:. 与 -> 的区别与用法及其STM32中的使用
  • 基于MATLAB实现传统谱减法以及两种改进的谱减法(增益函数谱减法、多带谱减法)的语音增强
  • mysql:MVCC机制
  • leetcode 39. Combination Sum和40. Combination Sum II
  • 人工智能100问☞第32问:什么是迁移学习?
  • 机器学习课程设计报告 —— 基于口红数据集的情感分析
  • 【免杀】C2免杀技术(九)DLL注入前置篇