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

前言  我们之前学习过vim编辑器、gccg++的使用和makemakefile工具,所以今天我们就可以使用它们创建Linux上第一个小程序——进度条。在实现进度条之前我们首先需要补充两个小知识。1. 回车概念  在Linux系统中,

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

前言

  我们之前学习过vim编辑器、gcc/g++的使用和make/makefile工具,所以今天我们就可以使用它们创建Linux上第一个小程序——进度条。在实现进度条之前我们首先需要补充两个小知识。

1. 回车概念

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

  • \n(换行符):

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

  • \r(回车符)

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

在制作进度条等动态文本输出时,\r非常有用。通过不断更新同一行的内容,可以创建出动态的视觉效果。

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

2. 行缓冲区

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

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

需要注意的是,行缓冲区只是一种缓冲机制,默认情况下并不是所有的输出都是行缓冲的,可以通过配置文件或者代码中的特定函数来改变缓冲方式。

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

fflush(stdout)是用来刷新标准输出流(stdout)的函数。标准输出流是一个缓冲流,当数据写入到标准输出流时,并不会立即显示出来,而是先存储在缓冲区中,当缓冲区被填满或者手动调用fflush函数时,才会将缓冲区的内容刷新到显示器上。

3. 进度条代码

代码语言:javascript代码运行次数:0运行复制
#include<stdio.h>
#include<string.h>
#include<unistd.h>

int main()
{
    //进度条代码

    //1.数组存放字符
    char bar[101];//最后存放/0
    memset(bar, '#', 100);

    //旋转字符数组
    char label[4] = "-\\|/";//反斜杠要两个进行转义
    //2.循环打印
    int i = 0;
    while (i < 100)
    {
        bar[i + 1] = '\0';
        printf("[%-100s][%d%%][%c]\r", bar, i + 1, label[i % 4]); //加上旋转标识
        fflush(stdout);//刷新缓冲区
        usleep(10000);
        bar[++i] = '#';
    }

    //3.最后换行
    printf("\n");
    return 0;
}

我们可以在Linux上打开vim编辑器创建progress.c代码,将上述进度条代码写上去,然后使用make/makefile工具搭配gcc的使用,将progress.c编译成可执行文件progress,然后在命来行输入./progress运行该程序,结果如下:

这样我们就可以模拟实现Linux上第一个小程序——文本进度条啦

发布者:admin,转转请注明出处:http://www.yc00.com/web/1755027337a5228439.html

相关推荐

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

    前言  我们之前学习过vim编辑器、gccg++的使用和makemakefile工具,所以今天我们就可以使用它们创建Linux上第一个小程序——进度条。在实现进度条之前我们首先需要补充两个小知识。1. 回车概念  在Linux系统中,

    1月前
    220

发表回复

评论列表(0条)

  • 暂无评论

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信