在Linux下用C语言实现简单的进度条
2017-04-09 15:20
337 查看
相信我们在平时使用电脑进行下载文件的同时都会看到一个进度条,提示我们文件下载的进度,所以呢我们来自己实现一个简单的进度条:
首先我们来看一个生活中的进度条:
通过观察我们选择用以下方式来实现一个简单进度条:
1.依次打印‘#’;
2.后面标注百分比;
代码如下:
运行结果:
备注:
fflush:
功能:清除文件缓冲区,文件以写方式打开时将缓冲区内容写入文件。
fflush 的返回值类型是int类型。如果成功刷新,fflush返回0。指定的流没有缓冲区或者只读打开时也返回0值。返回EOF指出一个错误。
fflush(stdin)刷新标准输入缓冲区,把输入缓冲区里的东西丢弃[非标准];
fflush(stdout)刷新标准输出缓冲区,把输出缓冲区里的东西打印到标准输出设备上;
printf(“。。。。。。。。。。。”);后面加fflush(stdout);可提高打印效率。
彩色进度条
在上面进度条的基础上实现一个彩色进度条。
终端的字符颜色由转义序列控制,是文本模式下的系统显示功能,与具体语言无关。转义序列以控制字符’ESC’开头。多数转义序列超过两个字符,故通常以’ESC’和左括号’[‘开头。该起始序列称为控制序列引导符,通常由’\033[‘或’\e[‘代替。
\033 是E的asc码,而这种是一个标记对,\033 是成对存在的.可以用e代替成\033
\033[ 后面的第一个参数是关闭所有文字的效果。
第二个参数是字体以及字体背景的颜色:
30-黑色,31-红色 ,32-绿色,33-黄色,34-蓝色,35-紫色,36-墨绿,37~39-白色
字体的背景色:
40-黑色,41-红色,42-绿色,43-黄色,44-蓝色,45-紫色,46-墨绿色,47-白色
第三个参数是字体的效果:
效果分为:1-高亮,4-下划线,5-闪烁,7-背景取反,2J—-清屏
最后一个m代表后面跟着要显示的字符串
模拟实现彩色进度条:
效果如下:
首先我们来看一个生活中的进度条:
通过观察我们选择用以下方式来实现一个简单进度条:
1.依次打印‘#’;
2.后面标注百分比;
代码如下:
#include<stdio.h> #include<unistd.h> int main() { int i = 0; char bar[120]; const char *lable = "|/-\\"; while (i <= 100) { printf("[%-100s][%d%%][%c]\r", bar, i, lable[i % 4]); fflush(stdout); bar[i] = '#'; i++; bar[i] = 0; usleep(100000); } printf("\n"); return 0; }
运行结果:
备注:
fflush:
功能:清除文件缓冲区,文件以写方式打开时将缓冲区内容写入文件。
fflush 的返回值类型是int类型。如果成功刷新,fflush返回0。指定的流没有缓冲区或者只读打开时也返回0值。返回EOF指出一个错误。
fflush(stdin)刷新标准输入缓冲区,把输入缓冲区里的东西丢弃[非标准];
fflush(stdout)刷新标准输出缓冲区,把输出缓冲区里的东西打印到标准输出设备上;
printf(“。。。。。。。。。。。”);后面加fflush(stdout);可提高打印效率。
彩色进度条
在上面进度条的基础上实现一个彩色进度条。
终端的字符颜色由转义序列控制,是文本模式下的系统显示功能,与具体语言无关。转义序列以控制字符’ESC’开头。多数转义序列超过两个字符,故通常以’ESC’和左括号’[‘开头。该起始序列称为控制序列引导符,通常由’\033[‘或’\e[‘代替。
printf("\033[0;37m%s\033[0m","hello world");
\033 是E的asc码,而这种是一个标记对,\033 是成对存在的.可以用e代替成\033
\033[ 后面的第一个参数是关闭所有文字的效果。
第二个参数是字体以及字体背景的颜色:
30-黑色,31-红色 ,32-绿色,33-黄色,34-蓝色,35-紫色,36-墨绿,37~39-白色
字体的背景色:
40-黑色,41-红色,42-绿色,43-黄色,44-蓝色,45-紫色,46-墨绿色,47-白色
第三个参数是字体的效果:
效果分为:1-高亮,4-下划线,5-闪烁,7-背景取反,2J—-清屏
最后一个m代表后面跟着要显示的字符串
模拟实现彩色进度条:
#include<stdio.h> #include<unistd.h> #define RED "\e[0;31m" #define BLUE "\e[0;34m" #define NONE "\e[0m" #define GREEN "\e[0;32m" #define YELLOW "\e[0;33;1m" #define PURPLE "\e[0;35m" #define GR "\e[0;36m" main() { char bar[120]; const char* lab = "|\-/-"; int i = 0; while(i<=100) { if(i%10==1) { printf(RED"[%-100s][%d][%c]\r"NONE,bar,i,lab[i%4]); } else if(i%10==2) { printf(YELLOW"[%-100s][%d][%c]\r"NONE,bar,i,lab[i%4]); } else if(i%10==3) { printf(BLUE"[%-100s][%d][%c]\r"NONE,bar,i,lab[i%4]); } else if(i%10==4) { printf(GREEN"[%-100s][%d][%c]\r"NONE,bar,i,lab[i%4]); } else if(i%10==5) { printf(PURPLE"[%-100s][%d][%c]\r"NONE,bar,i,lab[i%4]); } else { printf(GR"[%-100s][%d][%c]\r"NONE,bar,i,lab[i%4]); } fflush(stdout); bar[i] = '#'; i++; bar[i]=0; usleep(100000); } printf("\n"); return 0; }
效果如下:
相关文章推荐
- Linux下用C语言来实现简单的进度条
- 用C语言实现的简单Web服务器(Linux)
- C语言简单的进度条实现
- 在Linux下用C语言写一个小程序实现一个进度条编写Makefile来进行运行
- Linux下的C语言编程——简单实现tcp客户端和服务器
- Linux下用C语言实现简单的密码登录
- linux下C语言实现文件传输的简单实例
- linux平台下C语言实现一个简单的httpsever
- linux 进度条的实现及makefile的简单应用
- 用C语言实现的简单Web服务器(Linux)
- Linux下的C语言编程——双向循环链表的简单实现
- Linux下使用socket传输文件的C语言简单实现
- Linux 下c语言ftp服务器简单实现
- linux下进度条的简单实现
- Linux下使用socket传输文件的C语言简单实现
- Linux下简单的日志功能实现(C语言)
- 【收集】Linux线程池(C语言)及简单实现示例
- Linux 用C语言实现简单的shell(1)
- Linux环境下C语言实现简单的基于文件的学生信息管理系统
- linux下进度条的简单实现