Linux小程序进度条--缓冲区理解

对缓冲区的理解

案例

1.
printf("hello 104!\n");
sleep(2);
//现象:当运行后显示器会立即显示hello 104的内容;

2.
printf("hello 104!");----➡️去掉\n后
sleep(2);
//现象:当运行后过2秒后才显示hello 104的内容
printf肯定比sleep先执行了,只不过数据没有被立马显示出来罢了;
hello 104在缓冲区里面

对缓冲区的理解(先了解,以后会详讲)

✳️是缓冲区就是一段内存空间;
有两种策略:1.立马将内存中的空间显示出来—刷新策略(行刷新)
行刷新:你要输出的这行字符串是不是一个完整行,只要是一个完整行我就立马给你刷新出来,你不是对不起我就不刷新,等缓冲区满了或者程序退出了或是碰到了换行符我再把你刷新出去;
❓如果我不想用\n就想让你的数据立马刷新?
✳️就要谈谈stdout(标准输出);我们总共有三个输入输出流;现在呢我们想要数据立马刷新出来,我们就需要刷新一下stdout,因为我们是往显示器上打的数据;
❓那我们怎么去刷新呢?
✳️系统接口:fflush

用法
 #include <stdio.h>
 int fflush(FILE *stream);

案例
```css
printf("hello 104!");----➡️去掉\n后
fflush(stdout);
sleep(2);
当运行后hello 104数据立马显示出来

讲讲回车 vs 换行

✳️弄清楚回车与换行:就拿作文纸来举例,我们当我们在一行写了字,我们换行,严格意义上讲换行应该就是到你最后一个字的下方,而不是从头开始!
若是跳转到最左侧然后再到下行这严格意义上来讲是回车 ➕换行一起的功能(即回车就是将光标回到当前行的开始)
回车即为:\r;换行即为:\n;
✳️我们倒计时,是不是在一行里面数字是覆盖式的显示出来9 8 7…(同一个位置上)
int cnt =9;

while(cnt)
{
	printf("%d\n",cnt);
	sleep(1);
}
则会每隔一秒再另起一行打出数字(但不是我们想要的倒计时,按理应该是同一行同一个位置每隔一秒显示一个数字的,则应该是用\r,而不是\n)
while(cnt)
{
	printf("%d\r",cnt);-----➡️改为\r
	sleep(1);
}
会发现屏幕上一直不显示内容!
解答:因为没有触发行刷新!这就要用到fflush了
while(cnt)
{
	printf("%d\r",cnt);-----➡️改为\r
	fflush(stdout);
	sleep(1);
}
这样便完成了!也是编写进度条到预备工作

进度条

#include <stdio.h>
  2 #include <string.h>
  3 #include <unistd.h>
  4 
  5 #define NUM 101
  6 void process()
  7 {
  8   char buf[NUM];
  9   memset(buf,'\0',sizeof(buf));
 10 
 11   const char* sign = "|/-\\";
 12 
 13    int cnt =0;
 14    while(cnt <= 100)
 15    {
 16       printf("[%-100s][%d%%]%c\r",buf,cnt,sign[cnt % 4]);//----预留100个空间出现一个#才占一个空间
 17       fflush(stdout);
 18       buf[cnt++] = '#';
 19       usleep(20000);
 20    }
 21    printf("\n");
 22 }                                                                                                                                                                                                 
 23 
 24 int main()
 25 {
 26   process();
 27   return 0;
 28 }

gitee

git什么是版本管理

✳️git是一个软件工具,gitee是基于git工具,搭建起来的网站

使用

#git clone ➕仓库地址
会要我们输入账号和密码(gitee的账号和密码)
便会给我们云服务器路径下给我们有一个仓库
若想提交test.c则输入#git add ➕test.c;然后git commit -m “我的练习”(吧test.c添加到本地仓库,然后“”里面输入的日志);然后#git push 然后输入账号和密码就能再远端仓库可以看到了;
git log可以看自己提交的历史信息请添加图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值