我是靠谱客的博主 优秀龙猫,最近开发中收集的这篇文章主要介绍Linux小程序---进度条,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

文章作者:看风起花落
.
唯有热爱可抵岁月漫长,与诸君共勉!!!


思路

要完成进度条程序,首先我们来观察这两段代码的区别

int main()
{
printf("hello worldn");
sleep(2);
return 0;
}
int main()
{
printf("hello world");
sleep(2);
return 0;
}

这两段代码只是带了n和没有带n的区别,

我们可以观察到的现象是

第一段代码运行的结果是屏幕打印hello world,然后等待2秒钟,程序结束。

第二段代码运行的结果是等2秒钟之后,程序结束之时,hello world才显示在屏幕上。

为什么会这样?难道第二段代码是先执行sleep(2)吗?

显然不是,C程序没有改变代码结构,一般都是顺序执行。

之所以出现这种现象是因为程序打印信息并不是直接打印到屏幕上,而是将要打印的字符串拷贝到

缓冲区当中,只有缓冲区刷新时,才会显示到屏幕,而显示器刷新的策略就是遇到n就刷新。

所以我们可以用ffulsh(stdout)这个函数控制立即刷新,即可达到n的效果

我们在认识到,r是只回车并不换行的意思

有了这两点知识储备就可以进行进度条代码的编写了

小提示:我的运行环境是Linux,所以头文件有一些差别。


进度条代码

#include <stdio.h>

#include <string.h>

#include <unistd.h>

#define N 100

int main()
{
char bar[N+1];//进度条的长度设为100,+1的目的是存放

memset(bar,'',sizeof(bar));//初始化

const char tip[] = "|/-\";//小提示符号,进度条运行时它就转动,表示进度条还没结束

int i = 0;
while(i<=100)
{
printf("[%-100s][%3d][%c]r",bar,i,tip[i%4]);
fflush(stdout);
bar[i++] = '*';//设置进度条符号

//sleep(1);

usleep(100000);//usleep是微秒级别的延时

}
printf("n");
return 0;
}

最后

以上就是优秀龙猫为你收集整理的Linux小程序---进度条的全部内容,希望文章能够帮你解决Linux小程序---进度条所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(43)

评论列表共有 0 条评论

立即
投稿
返回
顶部