linux操作系统实现一个简单的进度条(代码片段)

Ricky_0528 Ricky_0528     2022-12-07     370

关键词:

文章目录

一、预备知识

  • 换行和回车的区别
    • \\r:回车,回到当前行的行首,而不会换到下一行,如果接着输出的话,本行以前的内容会被逐一覆盖,如果之前的内容比下一次来的的内容长,就不会被完全覆盖
    • \\n:换行,换到当前位置的下一行,而不会回到行首
#include <stdio.h>
#include <unistd.h>

int main()

    //printf("hello\\n");
    printf("hello");

    sleep(5);

    return 0;

  • printf已经执行,但是数据没有被立即刷新到显示器中,没有遇到\\n字符串会暂时保存在用户C语言级别的缓冲区,然后再由缓冲区刷新到显示器中,如果一直未遇到就直到程序结束才会被刷新出来

    显示器设备刷新策略就是行刷新,即遇到\\n即进行刷新

    C程序默认会打开三个输入输出流:

    stdin,stdout,stderr

    键盘 显示器 显示器

    可以使用头文件 unistd.h 下的 fflush 来刷新输出缓冲区 stdout

#include <stdio.h>
#include <unistd.h>

int main()

    //printf("hello\\n");
    printf("hello");

	fflush(stdout); //刷新输出缓冲区

    sleep(5);

    return 0;

二、简单的倒计时

#include <stdio.h>
#include <unistd.h>
int main()

    int count = 20;
    while (count)
    
        printf("%2d\\r", count); //因为一共是两个字符,所以需要预留出两个字符的位置
        fflush(stdout);
        count--;
        sleep(1);
    
    return 0;

三、实现

#include <stdio.h>
#include <unistd.h>
#include <string.h>

#define NUM 100

int main()

    char bar[NUM + 1];
    memset(bar, '\\0', sizeof(bar));

    const char* label = "|/-\\\\";

    int i = 0;
    while (i <= NUM)
    
        printf("[%-100s][%3d%%] %c\\r", bar, i, label[i % 4]);
        fflush(stdout);
        bar[i] = '#';
        usleep(50000);

        i++;
    
    printf("\\n");

    return 0;

linux中实现一个简单的进度条

...前下载进度的就是我们今天要说的进度条,进度条的模拟实现是挺简单的,但是要做的比较实用还是需要注意很多地方的,下来我就一步步的深入分析一下进度条得实现。1.起初写下了这样的代码,解释以下几点:   查看详情

unity简单的进度条实现(代码片段)

制作进度条所需的资源:用以载入进度条显示的场景进度条背景以及进度条本身(颜色区别)展示百分制进度情况的Text文本需要载入的场景(这里使用的是自带场景)载入时的场景布局:要将Load的ImageType修改为Filled,FillMethod修... 查看详情

compose自定义条形进度条(代码片段)

...更方便简单,比如接下来本文要介绍的就是使用Compose实现View系统中常见的条形进度条。自定义进度条Composematerial包中提供了CircularProgressIndicator实现View系统中的圆形进度条,因为Compose没有现成的条形进度条,所以我... 查看详情

compose自定义条形进度条(代码片段)

...更方便简单,比如接下来本文要介绍的就是使用Compose实现View系统中常见的条形进度条。自定义进度条Composematerial包中提供了CircularProgressIndicator实现View系统中的圆形进度条,因为Compose没有现成的条形进度条,所以我... 查看详情

shell实现简单的进度条(代码片段)

实现printf的有色输出:参考链接实现代码:#!/bin/bashlabel=('|''/''-''\\\\')str=''str1=''str2=''k=0#表示百分比进度foriin1..100do str+=& 查看详情

第七章文本进度条的实现(代码片段)

文本进度条大家都见过程加载的时候的文本进度条进度条的原理是什么呢?1、采用字符串方式打印可以动态变化的文本进度条2、进度条需要能在一行中逐渐变化问题分析:如何获取一个文本进度条的变化时间呢?1、采用sleep()... 查看详情

asp.net的一个简单进度条功能(代码片段)

...完成后,进度条消失,其实也是比较简单的了。我们需要一个进度条代码文件ProgressBar.htm(注意:是没有head这些标签的) <scriptlanguage="javascript">functionSetPorgressBar(pos)//设置进度条居中varscreenWidth=document.body.of 查看详情

compose自定义条形进度条(代码片段)

...更方便简单,比如接下来本文要介绍的就是使用Compose实现View系统中常见的条形进度条。自定义进度条Composematerial包中提供了CircularProgressIndicator实现View系统中的圆形进度条,因为Compose没有现成的条形进度条,所以我... 查看详情

[python]实现文本进度条(代码片段)

...xff0c;它能度条功能。今天我们将利用Python字符串处理方法实现文本进度条功能。最简单地,利用print()函数实现简单的非刷新文本进度条。基本思想是按照任务执行百分比将整个任务划分为100个单位,每执行N%输出一次进... 查看详情

手把手教你实现一个vue进度条组件!(代码片段)

...多文档或npm等都用到的页面跳转进度条,于是便想自己去实现一个,特此记录。来看下npm搜索组件时候的效果:so下面咱们一起动手实现一下呗。定义使用方式想实现一个组件的前提,一定要想好你的需求是什么,还要自己去定... 查看详情

实现winfrom进度条及进度信息提示,winfrom程序假死处理(代码片段)

方法一:使用线程    功能描述:在用c#做WinFrom开发的过程中。我们经常需要用到进度条(ProgressBar)用于显示进度信息。这时候我们可能就需要用到多线程,如果不采用多线程控制进度条,窗口很容易假死(无法... 查看详情

linux|手把手教你写一个进度条小程序(代码片段)

...ff0c;提出问题❓3、行缓冲的概念+疑难解答4、小结四、实现一个倒计时的功能1、实现从9~0的倒计时2、进阶:10~0的倒计时显示器打印原理解释3、错误修改五、进度条小程序【详解】1、准备工作2、进度条样式说明3、主体进... 查看详情

用svg实现一个环形进度条(代码片段)

svg实现环形进度条需要用到的知识:1、会使用path的d属性画一个圆环2、熟悉stroke,stroke-linecap,stroke-width,stroke-dasharray、stroke-dashoffset 话不多说,直接上代码<divstyle="width:200px;height:200px;"><svgviewBox="00100100">&l 查看详情

element穿梭框transfer与进度条组件绑定(代码片段)

...度条组件绑定文章目录Transfer与进度条组件绑定前言一、实现原理二、实现流程三、完整代码总结前言最近做的后台管理系统里使用了Element组件Transfer做了一个工作表,然后加了一个进度条来表示工作进度,我希望能将两者绑定起... 查看详情

简单实用的进度条加载组件loader.js

本文提供一个简单的方法实现一个流程的进度条加载效果,以便在页面中可以通过它来更好地反馈耗时任务的完成进度。要实现这个功能,首先要考虑怎样实现一个静态的进度条效果,类似下面这样的:这个倒是比较简单,两个... 查看详情

cssreactjs的简单进度条(代码片段)

查看详情

shell实现简单的进度条(代码片段)

实现printf的有色输出:参考链接实现代码:#!/bin/bashlabel=('|''/''-''\\\\')str=''str1=''str2=''k=0#表示百分比进度foriin1..100do str+="" doneforjin0..200do letn=j%4 printf"\\0... 查看详情

svg的圆形进度条(代码片段)

 目前发现svg实现一些动画效果是比较高效简单的。如圆形进度条,只要会stroke-dasharray与stroke-dashoffset属性基本就可以实现,而且美观。<!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"><title>Document</title 查看详情