【Linux】简单实现进度条

一提起进度条,大家会想到在进行安转软件或下载视频等时,会出现以下几点

1、进度条存在一个区间,不断加载数据,直到区间加载满了。

2、发现会显示你的进度,从0%~100%。

3、在网速不好的时候,会出现一个旋转的小圈,表示在进行加载数据。

思路:

我们通过一个数组,每加载成功一次,数组会多出现一个标示。由于进度条是在一行内进行的,故我们需要回车,不需要换行,通过“\r”实现。

1、进度条由0%~100%,在字符数组中,输出一串字符时,最后以“\0”结束的,故需要一个大小为102的数组,加载成功的数据用“#”表示。

2、进度条会出现一个区间,然后在里面进行加载,故先用“【”和“】”表示加载的区间。

3、定义一个rate标识进度,每进行一次加一,直到100时停止。

4、在进行回车前,需要进行刷新。

5、在加载进度时,通过sleep()或usleep()控制睡眠时间,sleep表示秒,usleep表示微秒。

6、对于加载中旋转的小圈通过“/-|\”逆时针进行。

下面实现进度条

在打印buf时,每次在中间预留100个位置,由于在进行打印buf时,会从后向前打印,故用-100.

在rate为0时,不进行加载‘#’,故从buf+1开始输出。

通过make进行编译链接,结果如下所示

有关make和makefile可查看本人上一篇博客:http://10741357.blog.51cto.com/10731357/1785098

● 通过两个程序对回车、换行以及缓冲区进行分析。

上述两个程序运行结果一样吗?两个都会打印出“hello world”,但是左边程序会先休息1秒再打印,右边程序先打印后休息1秒。为什么?由于在c语言中是行缓冲,程序存放在缓冲区中,遇到‘\n‘进行刷新,没有‘\n‘一直进行后面操作,程序被强制结束会进行刷新。回车换行是一行到新一行的打印。

时间: 2024-10-12 03:59:06

【Linux】简单实现进度条的相关文章

Linux下实现进度条并且彩色打印

Linux下实现进度条并彩色打印 一.为什么要实现一个进度条? 首先就是简单 ( ^_^ ) 其次就是理解以下几个知识点: 1. ' \r ' 与 '  \n ' 的区别 先来看下什么是缓冲区:暂时存放输入输出信息的地方 \r:将要输入输出的信息会覆盖缓冲区原有的信息 \n:先进行输入输出信息,再换行,最后刷新缓冲区 2. usleep函数 作用:把调用该函数的线程挂起一段时间,单位是微秒 头文件:#include <unistd.h> 语法:void usleep( int micro_se

简单的进度条程序

简单的进度条程序 1 import sys,time 2 for i in range(31): 3 sys.stdout.write("\r") #每一次清空原行 4 sys.stdout.write("%s | %s" % (int(i/30*100),int(i/30*100)*"*")) 5 sys.stdout.flush() #强制刷新屏幕 6 time.sleep(0.5) #每隔0.5秒打印一次

通过实现Linux下的进度条引发的一系列问题

Linux下实现进度条 代码如下:  1 #include<stdio.h>   2 #include<unistd.h>   3 void Progess()   4 {   5         char arr[101];   6         memset(arr,'\0',sizeof(arr)/sizeof(char));   7         char state[5]="|/-|\0";   8         int i=0;   9    

简单的进度条

对于我知识吸收慢,就从简单的学起吧!简单的进度条.感觉自己写的代码很差劲,所以如果有大神不经意经过的话,还望动动尊指,指点一二,多多指教^-^! 接下来我讲出我的故事!我就希望我的代码后期重用性可以好点,所以就想自己写一些组件,这样可以既方便又快捷.先从进度条开始! 这是jq宝宝: /* 进度条(长方形简单) 传入class.宽度width.长度height.边框颜色border.圆角radius.进度条颜色bgColor,时间time */ function getProBar(obj){ $

Linux中实现一个简单的进度条【转】

转自:http://blog.csdn.net/yuehailin/article/details/53999288 说起进度条,其实大家常常见到,比如说你在下载视频或文件的时候,提示你当前下载进度的就是我们今天要说的进度条,进度条的模拟实现是挺简单的,但是要做的比较实用还是需要注意很多地方的,下来我就一步步的深入分析一下进度条得实现. 1.起初写下了这样的代码,解释以下几点:     1>首先我们需要将[ ]固定在左右两边,中间预留下空间,然后用“=”进行填充.这里printf("[%-

linux——学习篇(三)之makefile的简单应用及实现简单的进度条

一.makefile make是一个命令,而makefile是一个文件.make命令执行时,需要一个 Makefile 文件,以告诉make命令需要怎么样的去编译和链接程序.一个工程中的源文件不计数,其按类型.功能.模块分别放在若干个目录中,makefile定义了一系列的规则来指定,哪些文件需要先编译,哪些文件需要后编译,哪些文件需要重新编译,甚至于进行更复杂的功能操作,因为makefile就像一个Shell脚本一样,其中也可以执行操作系统的命令.makefile 带来的好处就是--"自动化编译

LINUX实现简单的进度条

方法:利用数组的循环输出,是这些图形化也可以在我们的黑框中实现了 哈哈 /********************************************************************** * * Copyright (c)2015,WK Studios * * Filename: progress.c * * Compiler: GCC * * Author:WK * * Time: 2015 20 5 * ******************************

在Linux下写一个简单的进度条,用make指令进行编译。

首先建立一个新的文件,touch progress_bar.c 执行该vim progress_bar.c命令,写进度条的程序.写进一个进度条程序: #include<stdio.h> #include<unistd.h> #include<string.h> void progress() { int i = 0; char bar[102]; memset(bar,0,102*sizeof(char)); const char* lable="|/-\\&

简单的进度条演示

今天在回答一个网友的问题时,学习了一下进度条的制作,其实也简单,是用jQuery的animate来实现的. 这是animate的的文档,进度条里主要用到了step和complete两个属性:http://jquery.bootcss.com/animate/ <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Docum