当前位置: 首页 > news >正文

桂林网站建设公司信息流广告加盟代理

桂林网站建设公司,信息流广告加盟代理,图书馆网页设计素材,wordpress下载主题footer作者:小萌新 专栏:Linux 作者简介:大二学生 希望能和大家一起进步! 本篇博客简介:写出Linux中的第一个小程序 进度条 进度条小程序行缓冲区概念\r 和 \n进度条代码和演示行缓冲区概念 我们首先用两段代码来感受下行缓…

作者:@小萌新
专栏:@Linux
作者简介:大二学生 希望能和大家一起进步!
本篇博客简介:写出Linux中的第一个小程序 进度条

进度条小程序

    • 行缓冲区概念
    • \r 和 \n
    • 进度条代码和演示

行缓冲区概念

我们首先用两段代码来感受下行缓冲区的存在

在这里插入图片描述
上面的这段代码会输出什么?

毫无疑问 它会输出hello world之后换行 并且还会休眠三秒 之后结束程序

运行结果也符合我们的预期
在这里插入图片描述
可是如果我们将代码改成这样子呢?
在这里插入图片描述
去掉了换行符 那么代码会打印出hello world之后不换行然后休眠三秒结束程序嘛

我们可以编译之后运行试试

我们可以发现并没有按照我们的预期运行 而是直接开始了三秒sleep
在这里插入图片描述
之后再打印出了hello world
在这里插入图片描述
那么这是为什么呢? 按照道理说顺序结构的运行应该是先打印再睡眠的啊

这里其实是因为行缓冲区的存在

我们的显示器对应的是行刷新

即当行被刷新(可以通过换行刷新) 或者被写满的时候才会被打印出来

而hello world既没有写满行 又没有刷新行缓冲区 所以自然不会被打印到显示器当中

\r 和 \n

  • \n 换行 让光标下移一格
  • \r 回车 让光标回到这一行的行首

当我们敲击键盘上的enter键的时候实际上就等于 /n + /r

那么有意思的部分就来了 既然/r是让光标回到这一行的行首

如果我们写下一个数之后立马使用/r回到这一行的行首继续写一个数

那么是不是这个数就被我们覆盖了呢?

其实这个问题的本质就是/r会不会刷新行缓冲区 如果不会那么前面写的数就会被后面写的数覆盖

我们写出下面的代码
在这里插入图片描述
最后的结果是这样子的
在这里插入图片描述
我们可以发现最后什么都没有打印

这是因为\r并不会刷新行缓冲区的缘故 如果想要将每个数字打印出来我们则需要一个行缓冲区刷新函数

这个函数就是 fflush(stdout)

加上这段代码之后我们再编译运行程序试试看
在这里插入图片描述
我们可以发现 这里它就变成了一个倒计时器了
在这里插入图片描述

进度条代码和演示

我们要设计一个进度条首先至少要有100个空间

我们的每个 ‘#’ 号对应着一个空间 有多少个 ‘#’ 也就代表着到了百分之几

我们首先写出下面的代码

其中 usleep的单位是纳秒 1毫秒 = 1000纳秒

所以50000纳秒 = 50毫秒

走100次也就是5000毫秒 也就是说这个程序会在5秒左右走完
在这里插入图片描述
在这里插入图片描述

这是这样子好像还是缺少点什么 我们尝试用两个框框把这个字符串框起来这样子好看一点

此外 我们可以在这框框外面加上一个框框 里面显示程序走了百分之多少了
在这里插入图片描述
在这里插入图片描述
此时这个进度条程序已经初具雏形了

如果我们还想要这个这个进度条是否在工作中则需要在它的最后加上一个旋转的小圈圈 如果这个圈圈还在旋转则表示仍然在加载中

在这里插入图片描述
这样子我们的进度条小程序就完成啦

源代码如下

  1 #include <stdio.h>2 #include <string.h>3 #include <unistd.h>4 5 int main()6 {7   char pb[102];8   memset(pb,'\0',102);9   int i = 0;10   char arr[4];11   arr[0] = '\\';12   arr[1] = '|';13   arr[2] = '/';14   arr[3] = '-';15   while (i != 100)16   {17     pb[i] = '#';18     printf("[%-100s][%%%d][%c]\r",pb,i+1,arr[i%4]);                                                                                                                                               19     fflush(stdout);20     usleep(50000);21     i++;22   }23   return 0;24 }
http://www.ds6.com.cn/news/93252.html

相关文章:

  • 做期权注册网站网络推广需要什么
  • 企业信用公示信息网网站建设及推广优化
  • 网站建设前的问卷凡科网建站系统源码
  • 佛山新网站建设报价公司优化是什么意思
  • 建设银行网站 个人客户互联网广告价格
  • 滕州做网站比较好的网络公司怎样在百度上打广告
  • 自己如何做网站关键词排名站内关键词自然排名优化
  • 一家专门做灯的网站企业网站设计规范
  • 做网站需要的语言seo链接优化建议
  • 贪玩传奇手游官方网站网络营销专业是做什么的
  • 自己给网站做logo品牌seo培训咨询
  • 牡丹江建设银行网站百度网站禁止访问怎么解除
  • 郑州有学网站制作郑州新闻发布
  • 网站 如何 备案竞价推广的基本流程
  • 考研培训机构排名前五的机构seo文章生成器
  • 花钱做网站注意些什么360竞价推广怎么做
  • 安阳网约车准入条件搜外seo视频 网络营销免费视频课程
  • 企业模板网站怎么做武汉seo排名扣费
  • 制作网站软件叫什么线上营销推广
  • 网站建设运营公司排行杭州优化外包哪里好
  • 做网站做网站希爱力副作用太强了
  • 门户网站建设与管理沈阳seo关键字优化
  • 如何做网站预览免费的外贸网站推广方法
  • 自己免费做网站(三)平台推广引流
  • seo关键词优化怎么操作北京seo服务行者
  • 女生做网站开发网站建设优化推广系统
  • 宁波建网站哪家好站长工具权重
  • 对于网站开发有什么要求个人如何在百度上做广告
  • 做平台网站怎么做的b2b采购平台
  • 城口网站建设实事新闻热点