首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >【Linux】实现三个迷你小程序(倒计时,旋转指针,进度条)

【Linux】实现三个迷你小程序(倒计时,旋转指针,进度条)

作者头像
修修修也
发布2024-09-11 08:48:30
发布2024-09-11 08:48:30
4230
举报

📌倒计时小程序

🎏项目效果展示

我们先来看看倒计时小程序实现的效果是怎样的:


🎏项目实现思路

这个小程序的作用就是根据调用函数时传入的数字, 然后从这个数字的秒数开始倒计时。实现原理也很简单, 就是每隔一秒打印一个减减后的数字即可。 但是在此之前我们要先了解一个转义字符: \r(回车) 它会使光标回到当前行的最前端。 要注意将换行和回车区分开:


🎏项目完整代码

代码语言:txt
复制
    细节见注释,函数代码如下:
代码语言:javascript
复制
void countdown(int n) //传入的n代表将要倒计时n秒
{
	while (n >= 0) 
	{
		printf("%-2d\r",n); 
		fflush(stdout);//使用\r回车后需要手动清空一下缓存区,否则就
		sleep(1); //注意,Linux中的sleep()函数接收的参数是秒
		n--;
	}
	printf("\n");
}

📌旋转指针小程序

🎏项目效果展示

我们先来看看旋转指针小程序实现的效果是怎样的:


🎏项目实现思路

该小程序实现也比较简单,就是循环不停打印四个字符(" -, \, |, / ")就行,思路和倒计时小程序几乎一样。

🎏项目完整代码

代码语言:txt
复制
    细节见注释,函数代码如下:
代码语言:javascript
复制
//设置常量字符串,方便后续打印
const char* Rotate = "-\\|/";

//旋转花函数
void rotate() 
{
	int count = 0;
	while (count < 200) 
	{
		printf("[%c]\r", Rotate[count % 4]); 
		fflush(stdout);//回车要清缓冲区
		usleep(50000); //速度通过传入的参数调
		count++;
	}
	printf("\n");
}

📌进度条小程序

🎏项目效果展示

我们先来看看进度条小程序实现的效果是怎样的:


🎏项目实现思路

该程序实现思路是,我们使用一个空字符数组来存储进度条的字符信息,一开始为空,每过一个单位时间就重新打印一遍字符数组并多初始化一个数组内容为进度条的组成字符,直到字符数组被填满,表示进度已满。我们也可以在后面加上一个百分比数字来帮助判断进度条的进度, 还可以加上前面的旋转指针来表示进度条在加载, 实现思路和前面完全一样。


🎏项目完整代码

代码语言:txt
复制
    在开始写代码之前可以先设置一些宏常量,方便后续修改,头文件内容和函数对照如下图:
代码语言:txt
复制
    综上,函数代码如下:
代码语言:javascript
复制
//改良版用一个字符数组来存储进度条字符信息,时间复杂度较低

void processbar (double speed)//用于接收进度条前进的速度
{
	char bar[NUM];
	memset(bar, ' \0', NUM); 
	int count = 0;
	int sp = speed * 1000000; 
	while (count < NUM)
	{
		printf(BLUE"[%-100s] [%d%%] [%c]\r"END, bar, count, Rotate[count % 4]);
		fflush(stdout);
		usleep(sp);//用户传入的是秒,我们这里是微秒
		bar[count++] = BODY;
		if (count < NUM - 1)
			bar[count] = HEAD;
	}
	printf("\n");
}

结语

希望这篇关于 Linux实现迷你小程序 的博客能对大家有所帮助,欢迎大佬们留言或私信与我交流.

学海漫浩浩,我亦苦作舟!关注我,大家一起学习,一起进步!

相关文章推荐 【Linux】手把手教你从零上手gcc/g++编译器 【Linux】手把手教你从零上手Vim编辑器 【Linux】一文带你彻底搞懂权限 【Linux】基本指令(下) 【Linux】基本指令(中) 【Linux】基本指令(上)


本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2024-08-22,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 📌倒计时小程序
    • 🎏项目效果展示
    • 🎏项目实现思路
    • 🎏项目完整代码
  • 📌旋转指针小程序
    • 🎏项目效果展示
    • 🎏项目实现思路
    • 🎏项目完整代码
  • 📌进度条小程序
    • 🎏项目效果展示
    • 🎏项目实现思路
    • 🎏项目完整代码
  • 结语
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档