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

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

🦄个人主页:修修修也

🎏所属专栏:Linux

⚙️操作环境:Xshell (操作系统:CentOS 7.9 64位)


目录

📌倒计时小程序

🎏项目效果展示

🎏项目实现思路

🎏项目完整代码

📌旋转指针小程序

🎏项目效果展示

🎏项目实现思路

🎏项目完整代码

📌进度条小程序

🎏项目效果展示

🎏项目实现思路

🎏项目完整代码

结语


📌倒计时小程序

🎏项目效果展示

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


🎏项目实现思路

        这个小程序的作用就是根据调用函数时传入的数字, 然后从这个数字的秒数开始倒计时。实现原理也很简单, 就是每隔一秒打印一个减减后的数字即可。

        但是在此之前我们要先了解一个转义字符: \r(回车)  它会使光标回到当前行的最前端。

        要注意将换行和回车区分开:


🎏项目完整代码

        细节见注释,函数代码如下:

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

📌旋转指针小程序

🎏项目效果展示

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


🎏项目实现思路

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

🎏项目完整代码

        细节见注释,函数代码如下:

//设置常量字符串,方便后续打印
const char* Rotate = "-\\|/";//旋转花函数
void rotate() 
{int count = 0;while (count < 200) {printf("[%c]\r", Rotate[count % 4]); fflush(stdout);//回车要清缓冲区usleep(50000); //速度通过传入的参数调count++;}printf("\n");
}

📌进度条小程序

🎏项目效果展示

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


🎏项目实现思路

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


🎏项目完整代码

        在开始写代码之前可以先设置一些宏常量,方便后续修改,头文件内容和函数对照如下图:

        综上,函数代码如下:

//改良版用一个字符数组来存储进度条字符信息,时间复杂度较低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】基本指令(上)


 


http://www.mrgr.cn/news/5085.html

相关文章:

  • vivado RPM
  • 基于UDP的网络聊天室
  • android——workermanager
  • 基于Python的mediapipe和opencv的人体骨骼、人体姿态关键点的实时跟踪项目
  • 推荐一款功能全面的层次化笔记应用,支持自由拖拽、缩放、旋转,可视化非常牛逼(附源码)
  • 证书学习(二)搞懂 keystore、jks、p12、pfx、crt、csr、pem文件的区别
  • Flutter-自适用高度PageView
  • TTS 文本 vs SSML
  • CR-NeRF 代码eval.py解析
  • 弹射无人机和筒射无人机技术区别详解
  • 后端给前端传递数据形式:广播 单播以及组播
  • EDKII之安全启动详细介绍
  • uniapp中switch和select组件阻止chane事件冒泡的方法
  • 科研绘图系列:Python语言时间趋势图
  • vue使用v-html保留原内容的缩进和换行
  • 预约咨询小程序搭建开发,uniapp前端,PHP语言开发
  • rabbitMQ安装与简单demo
  • EmguCV学习笔记 VB.Net 第6章 形状操作
  • Scratch编程环境:探索暗模式与可访问性选项的创新之路
  • html a标签打电话,发短信等。