【Linux】第一个小程序——进度条实现

让我们对这篇文章进行伪原创处理,保持文章的大意不变,同时保留图片的位置和原始格式。

【Linux】第一个小程序——进度条实现

前言

在之前的学习中,我们已经掌握了vim编辑器、gcc/g++的使用以及make/makefile工具的应用。今天,我们将利用这些知识在Linux上编写第一个小程序——进度条。在实现进度条之前,我们需要先了解两个关键概念。

回车与换行的区别

在Linux系统中,是两个重要的转义字符,它们分别代表换行符和回车符,具有不同的功能和使用场景。

(换行符):【定义】表示换行符,英文全称为newline,控制字符为LF(Line Feed)。它将光标移动到下一行的开头,常用于分隔文本的不同行。【功能】在Linux系统中,用于表示文本的换行。当输入新的字符时,它们会在新的一行上输出,使得文本内容更加清晰易读。

(回车符):【定义】表示回车符,英文全称为return,控制字符为CR(Carriage Return)。它将光标移动到当前行的开头,但不会移动到下一行。【功能】在Linux系统中,用于在同一行上连续输出不同的内容。如果有新的字符输入,它们将覆盖已存在的字符。这使得在同一行内更新文本内容成为可能。

的主要功能是换行,将光标移动到下一行的开头;而的主要功能是回车,将光标移动到当前行的开头。

行缓冲区的概念

在Linux中,行缓冲区是一种用于存储输出数据的缓冲机制,直到满足特定条件后才将数据发送出去。行缓冲区按行存储数据,只有当输出数据中包含换行符时,才会发送数据。

这种缓冲机制对于需要批量输出的场景非常有用,可以提高效率。同时,我们也可以使用特定的函数来刷新缓冲区,强制将缓冲区中的数据发送出去。

在动态显示文本进度条时,我们利用的是回滚而非换行,因为无法满足输出数据的条件,这时我们需要借助fflush(stdout);函数。

进度条代码

代码语言:javascript代码运行次数:0

运行复制“`javascript#include#include#includeint main(){ //进度条代码 //1.数组存放字符 char bar[101];//最后存放/0 memset(bar, ‘#’, 100); //旋转字符数组 char label[4] = “-|/”;//反斜杠要两个进行转义 //2.循环打印 int i = 0; while (i

我们可以在Linux上使用vim编辑器创建progress.c文件,将上述进度条代码写入其中,然后利用make/makefile工具和gcc编译器将progress.c编译成可执行文件progress。在命令行中输入./progress即可运行该程序,结果如下:

【Linux】第一个小程序——进度条实现

清理文件时,我们可以使用make clean命令删除文件:

【Linux】第一个小程序——进度条实现

如果需要重新编译progress.c文件,我们也可以使用make命令来实现:

【Linux】第一个小程序——进度条实现

Makefile文件内容如下:

【Linux】第一个小程序——进度条实现

彩色进度条

在C语言中,直接进行彩色输出并不是标准的一部分,因为C语言本身不支持这种特性。然而,如果你在控制台环境下编写程序,并且目标环境如Linux或某些支持ANSI转义码的系统,你可以利用ANSI escape codes(ANSI转义序列)来模拟颜色输出。

假设你想在控制台上打印一段带颜色的文字,例如一条红色的消息”Hello, World!”,你可以这样写:

代码语言:javascript代码运行次数:0

运行复制“`javascript#include int main() { if (isatty(fileno(stdout))) { // 检查是否是终端 printf(“[31m”); // 设置红色字体 printf(“Hello, World![0m”); // 打印消息并恢复默认颜色 } else { printf(“Hello, World!”); // 对于非终端设备,如文件,直接打印纯文本 } return 0;}

在这个例子中,如果程序在终端上运行,它会显示红色的”Hello, World!”;如果不是终端(如通过重定向输出到文件),则只显示普通的白色文字。

百度作家平台 百度作家平台

百度小说旗下一站式AI创作与投稿平台。

百度作家平台 146 查看详情 百度作家平台

对于颜色,通常会用到以下几种代码:

前景色:

黑色: [30m红色: [31m绿色: [32m黄色: [33m蓝色: [34m青色: [36m紫色: [35m白色: [37m

背景色:

黑色: [40m红色: [41m绿色: [42m黄色: [43m蓝色: [44m青色: [46m紫色: [45m白色: [47m

结束颜色设置: [0m[0m (等效)

当你想要结束颜色输出时,可以使用[0m来清除所有设置。但是请注意,这取决于终端是否支持这些转义码,以及用户终端配置。在Windows控制台上,由于其默认不支持ANSI转义码,上述方法可能无法生效。

因此,对于进度条代码,我们可以将其设置为我们喜欢的颜色,只需要在循环打印前后设置和取消字体颜色,代码如下:

【Linux】第一个小程序——进度条实现

然后我们使用make命令重新编译progress.c源文件:

【Linux】第一个小程序——进度条实现

运行结果如下:

【Linux】第一个小程序——进度条实现

模拟真实下载速度的进度条

我们需要使用随机数来模拟一次下载的进度,然后累加到进度条中,而不是一直维持一个速度下载,代码如下:

【Linux】第一个小程序——进度条实现

然后我们就可以使用随机数模拟下载了,结果如下:

【Linux】第一个小程序——进度条实现

然后就可以利用每次的下载量比例更新进度条,代码如下:

【Linux】第一个小程序——进度条实现

进度条打印效果如下:

【Linux】第一个小程序——进度条实现

以上就是【Linux】第一个小程序——进度条实现的详细内容,更多请关注创想鸟其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/457009.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2025年11月8日 01:50:32
下一篇 2025年11月8日 01:51:10

相关推荐

发表回复

登录后才能评论
关注微信