我是靠谱客的博主 典雅电话,最近开发中收集的这篇文章主要介绍【进度条】小程序的实现缓冲区的概念倒计时进度条,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

♥在实现进度条小程序之前我们需要交代一些知识点

首先先说个小知识点:
nr一样吗?
n其实是换行:就是光标跑到当前位置的下一行。
r其实是回车(不换行):就是光标跑到当前行的开始。
但是一般我们键盘上的回车就是换行加回车。

缓冲区的概念

在这里插入图片描述在这里插入图片描述
为什么hello world没有立即打印出来?难道是sleep先于printf执行吗?
解答:
显然不是,这是因为缓冲区的存在,printf已经执行了,但是数据没有立即被刷新到显示器上,字符串被暂时保存起来了,保存的地方就叫缓冲区。
在这里插入图片描述
在这里插入图片描述

这次一下就打印出来了,因为我们在最后加了n
那为什么?
因为显示器刷新策略就是行刷新,n换行了所以就刷新了。
还可以用fflush(stdout)进行刷新。

C程序默认会打开三个输入输出流
分别是:
stdin键盘
stdout显示器
stderr显示器
FILEstdin
FILE
stdout
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,'',sizeof(bar));
  const char*lable="|/-\";
  int i=0;
  while(i<=100)
  {
    printf("[%-100s][%3d%%][%c]r",bar,i,lable[i%4]);
    fflush(stdout);
    bar[i]='#';
    ++i;
    usleep(60000);
  }

  printf("n");
  return 0;
}

效果图:
在这里插入图片描述这样进度条小程序就实现啦,是不是很简单!


⭐感谢阅读,我们下期再见
如有错 欢迎提出一起交流

最后

以上就是典雅电话为你收集整理的【进度条】小程序的实现缓冲区的概念倒计时进度条的全部内容,希望文章能够帮你解决【进度条】小程序的实现缓冲区的概念倒计时进度条所遇到的程序开发问题。

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

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

评论列表共有 0 条评论

立即
投稿
返回
顶部