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

举报
修修修也 发表于 2024/10/25 15:40:24 2024/10/25
【摘要】 ​🦄个人主页:修修修也 🎏所属专栏:Linux ⚙️操作环境:Xshell (操作系统:CentOS 7.9 64位)​编辑目录📌 倒 计时 小程序 🎏 项 目效果展示 🎏 项 目 实现 思路 🎏 项 目完整代 码 📌 旋 转 指 针 小程序 🎏 项 目效果展示 🎏 项 目 实现 思路 🎏 项 目完整代 码 📌 进 度条小程序 🎏 项 目效果展示 🎏 项 目 实现 ...

​🦄个人主:修修修也

🎏所属专栏: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】基本指令(上)


​编辑

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。