Linux下编写进度条小程序

背景知识

回车换行是两个动作

1.先将光标移动到下一行,在将光标移动到句首

2

这里的hello,linux运行结果等了一会才出现,但sleep命令在打印的下面

这是因为hello,linux被缓存在内存里了,因为没有在hello,linux后加\n,数据没有被立刻刷新,等到程序运行结束后,会自动刷新。

不带\n or \r\n想立刻看到数据刷新到显示器上

cpp 复制代码
#include <stdio.h>
int main()
{
printf("hello bite!");
fflush(stdout);//立刻刷新
sleep(3);
return 0;
}

1.先来写一个倒计时程序练手

cpp 复制代码
#include <stdio.h>
#include <unistd.h>


int main()
{
int i = 10;
while(i >= 0)
{
printf("%-2d\r", i); // \n
fflush(stdout);
i--;
sleep(1);
}
printf("\n");
return 0;
}

2.进度条代码

process.c

cpp 复制代码
#include "process.h"
#include <string.h>
#include <unistd.h>
#define NUM 101
#define STYLE '='
// vesion1
void process_v1()
{
char buffer[NUM];
memset(buffer, 0, sizeof(buffer));
const char *lable="|/-\\";
int len = strlen(lable);
int cnt = 0;
while(cnt <= 100)
{
printf("[%-100s][%d%%][%c]\r", buffer, cnt, lable[cnt%len]);
fflush(stdout);
buffer[cnt]= STYLE;
cnt++;
usleep(50000);
}
printf("\n");
}

process.h

cpp 复制代码
#include <stdio.h>
void process_v1();

main.c

cpp 复制代码
#include "process.h"
#include <stdio.h>
int main()
{
process_v1();
return 0;
}

Makefile

cpp 复制代码
SRC=$(wildcard *.c)
OBJ=$(SRC:.c=.o)
BIN=processbar
$(BIN):$(OBJ)
gcc -o $@ $^
%.o:%.c
gcc -c $<
.PHONY:
clean:
rm -f $(OBJ) $(BIN)
相关推荐
小此方几秒前
Re:Linux系统篇(十九)进程篇·四:内核托底与生死交错 ,深度硬核剖析“僵尸”与“孤儿”进程
linux·运维·驱动开发
wj3055853788 小时前
课程 9:模型测试记录与 Prompt 策略
linux·人工智能·python·comfyui
abigriver9 小时前
打造 Linux 离线大模型级语音输入法:Whisper.cpp + 3090 显卡加速与 Rime 中英混输终极调优指南
linux·运维·whisper
wangqiaowq9 小时前
windows下nginx的安装
linux·服务器·前端
YYRAN_ZZU10 小时前
Petalinux新建自动脚本启动
linux
charlie11451419110 小时前
嵌入式Linux驱动开发pinctrl篇(1)——从寄存器到子系统:驱动演进之路
linux·运维·驱动开发
Agent手记10 小时前
异常考勤智能预警与处理与流程优化方案 | 基于企业级Agent的超自动化实战教程
运维·人工智能·ai·自动化
于小猿Sup10 小时前
VMware在Ubuntu22.04驱动Livox Mid360s
linux·c++·嵌入式硬件·自动驾驶
cen__y11 小时前
Linux12(Git01)
linux·运维·服务器·c语言·开发语言·git
不仙52012 小时前
VMware Workstation 26.0.0 在 Ubuntu 24.04 (内核 6.17.0) 上的安装与内核模块编译问题
linux·ubuntu·elasticsearch