zoukankan      html  css  js  c++  java
  • Linux下vim上编辑实现进度条

    1.效果展示:

    进度条,先来看一个效果:


    这是进度结果,模拟实现了进度条的前进、百分比的现实、以及稍微的动画特效。

    2.原理描述:

    因为Linux系统下的输出有缓存,如果及时刷新显示,就可以得到我们想看到的效果,这里必须调用:

    fflush(stdout);
    解释一下,fflush(stdout),是对标准输出流的清理,作用是立即清除输出缓存区的东西,并输出,有关于fflush(stdout),请移驾另一篇博客:

    地址:http://blog.csdn.net/li_ning_/article/details/51594340

    其实原理就是很简单,先看看代码:

    3.代码:

    #include<stdio.h>
    #include<string.h>
    
    void porc()
    {
        int rate = 0;
        char bar[102];                 //进度条长度
        memset(bar,'',sizeof(bar)); 
        const  char* lable = "|/-\";  //动画特效
        printf("加载中,请稍后...
    ");
        while(rate <= 100)
        {
    		bar[rate] = '=';
    		printf("[%-101s][%d%%][%c]
    ",bar,rate,lable[rate%4]);
    		fflush(stdout);            //强制刷新
    		rate++;
    		usleep(100000);            //间隔时间
        }
        printf("
    ");
        printf("加载完成...
    ");
    }
    
    int main()
    {
        porc();
        return 0;
    }
    
    A:数组在进度条的整个过程中,有一个缓存的作用,和进度区间的展示;

    B:在printf()后使用fflush(stdout)的作用是立刻将要输出的内容输出。 当使用printf()函数后,系统将内容存入输出缓冲区,等到时间片轮转到系统的输出程序时,将其输出。 

    使用fflush(out)后,立刻清空输出缓冲区,并把缓冲区内容输出,每一个循环,‘=’比前一个循环多一个,第二次的输出都去覆盖第一个的输出,如此才展示进度的动态效果:

    4.Linux下程序展示:


    赐教!

  • 相关阅读:
    POJ 1401 Factorial
    POJ 2407 Relatives(欧拉函数)
    POJ 1730 Perfect Pth Powers(唯一分解定理)
    POJ 2262 Goldbach's Conjecture(Eratosthenes筛法)
    POJ 2551 Ones
    POJ 1163 The Triangle
    POJ 3356 AGTC
    POJ 2192 Zipper
    POJ 1080 Human Gene Functions
    POJ 1159 Palindrome(最长公共子序列)
  • 原文地址:https://www.cnblogs.com/melons/p/5791825.html
Copyright © 2011-2022 走看看