概述
文章作者:看风起花落
.
唯有热爱可抵岁月漫长,与诸君共勉!!!
思路:
要完成进度条程序,首先我们来观察这两段代码的区别
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,'