Linux 倒计时与进度条程序实现及 Plus 升级版本
前言
本文讲解倒计时小程序、进度条小程序及其 Plus 升级版本的实现。
一、知识铺垫
1. 回车换行
键盘上的 Enter 键作用是回车并换行。回车是指让当前光标移动至当前行的起始位置,换行是换到下一行径直向下的对应位置。
在 Linux 中使用 \r 表示回车,使用 \n 表示换行。
2. 缓冲区
使用 gcc 编译链接为可执行程序后运行,C 语言程序从上往下执行。调用 printf 打印的字符串去哪了呢?
示例代码:
#include <stdio.h>
#include <unistd.h>
int main() {
printf("hello");
sleep(2);
return 0;
}
sleep 函数休眠指定秒数,头文件为 #include <unistd.h>。
2 秒后 hello 被打印在屏幕上。说明字符串被保存起来了,这个保存位置叫做缓冲区。缓冲区由 C 语言维护的一段内存组成,当程序结束或遇到 \n 时会刷新缓冲区内容。
可以使用 fflush 函数强制刷新缓冲区内容,需要传入对应的流(标准输入 stdin,标准输出 stdout,标准错误 stderr)。将 hello 刷新输出到屏幕,需传入标准输出流 stdout。
修改代码调用 fflush 强制刷新缓冲区即可:
#include <stdio.h>
#include <unistd.h>
int main() {
printf("hello");
fflush(stdout);
sleep(2);
return 0;
}
二、倒计时小程序
1. 实现
- 默认生成 10 秒倒计时,可自行修改。
- sleep 头文件为
#include <unistd.h>。 - 实现原理:使用 while 循环,注意使用 fflush 刷新缓冲区,每次打印后休眠 1 秒。
- 格式控制:10 是两个字符,不加格式控制打印 9 后会变成 "90"。使用
%2d占两个字符,默认右对齐。改为左对齐 符合阅读习惯。


