概述
♥在实现进度条小程序之前我们需要交代一些知识点
首先先说个小知识点:
n
和r
一样吗?
n
其实是换行:就是光标跑到当前位置的下一行。
r
其实是回车(不换行):就是光标跑到当前行的开始。
但是一般我们键盘上的回车就是换行加回车。
缓冲区的概念
为什么hello world没有立即打印出来?难道是sleep先于printf执行吗?
解答:
显然不是,这是因为缓冲区的存在,printf已经执行了,但是数据没有立即被刷新到显示器上,字符串被暂时保存起来了,保存的地方就叫缓冲区。
这次一下就打印出来了,因为我们在最后加了n
。
那为什么?
因为显示器刷新策略就是行刷新,n
换行了所以就刷新了。
还可以用fflush(stdout)
进行刷新。
C程序默认会打开三个输入输出流
分别是:
stdin键盘
stdout显示器
stderr显示器
FILEstdin
FILEstdout
FILE*stderr
为啥要打开这几个流呢?
因为我们写程序得写入数据,计算结果得输出结果到显示器,有错误还得报错。
下面我们先写一个
倒计时
#include<stdio.h>
#include<unistd.h>
int main()
{
int count=10:;
while(count)
{
printf("%2dr",count);
fflush(stdout);
--count;
sleep(1);
}
return 0;
}
现在我们来实现
进度条
#include<stdio.h>
#include<unistd.h>
#include<string.h>
#define num 100
int main()
{
char bar[num+1];
memset(bar,'