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

湖南网站建站系统平台企业员工培训课程

湖南网站建站系统平台,企业员工培训课程,怎样开发设计网站建设,商务网站设计论文前言 在我们的日常生活中,进度条是十分常见的,比如在软件下载中,应用加载中等等~~~那么进度条有什么特点?他又如何实现。 下面我们将结合下面的图展开讲解 一、前置理论知识 1.1回车和换行的区别 在我们的日常生活中&#x…

前言   

        在我们的日常生活中,进度条是十分常见的,比如在软件下载中,应用加载中等等~~~那么进度条有什么特点?他又如何实现。

下面我们将结合下面的图展开讲解

一、前置理论知识

1.1回车和换行的区别 

在我们的日常生活中,回车和换行似乎是相同的事情,但是事实上

  • 回车:光标回到当前行的左端
  • 换行:跳转到当前的下一行
  • 在C语言中"\n"表示回车加换行,"\r"单单指的是回车;

PS:现在我们键盘上的ENTER同时兼备了回车和换行的功能

我们可以看到在老式的键盘中回车键的符号和对应的形状都是一个先向下再向左的箭头。也就是说这一个键同时实现了两个功能。

1.2缓存区的概念

在C语言中,缓存区是一种存储空间,用于存储程序中经常使用的变量和数据。缓存区的目的是提高程序的运行速度,当程序需要访问一个变量或数据时,处理器会先检查缓存区中是否存在该数据的副本,如果存在,则直接访问缓存区中的数据,而不是从内存中读取。这样可以减少内存访问次数,提高程序的执行速度。

在C语言中会默认打开三个输入输出的文件,分别是标准输入流stdin,标准输出流stdout,标准错误stderr。

在我们平时的程序中,从程序中输出的数据或者键盘上读取的数据会先存到一个缓存区中,在需要时经行读取和截断。(比如:在printf函数调用中输入带有空格的字符串,空格后的数据未被访问,存入缓存区)

1.2.1“\n”和“\r”在缓冲区中的作用效果差别

  • 在Linux中我们经常说一句话:万物皆文件。也就是Linux系统认为显示器是文件,键盘是文件。在我们使用printf函数会将缓存区的数据读取到显示器上。
  • 要注意的是显示器默认是行刷新,也就是当输出内容配上“\n”后会直接回车+换行并立刻将内容打印在屏幕上,待睡眠结束后,才会弹出操作框;

  • 而当输出内容配上“\r”后,其会先输出到缓冲区中,待睡眠结束后才会和操作框一起输出
 printf("hello Makefile!\n");先行打印,待睡眠结束后才弹出操作框printf("hello Makefile!\r");待睡眠结束后才会和操作框一起打印

1.2.2fflush函数

  • fflush是一个在C语言标准输入输出库中的函数,功能是冲洗流中的信息,该函数通常用于处理磁盘文件。fflush()会强迫将缓冲区内的数据写回参数stream 指定的文件中。
  • 在下面代码块中,"hello Makefile!"本来应该待睡眠结束后才会和操作框一起弹出,在此之前存储在缓冲区中;但我们用了fflush(stdout);(stdout是其数据类型),直接将内容从缓冲区中写回显示器文件中;
  • 最终完成的效果是:先行打印,待睡眠结束后才弹出操作框
#include <stdio.h>
int main()
{printf("hello Makefile!\r");fflush(stdout);sleep(3);return 0;
}

 二、Linux中的先行配置

在Linux中我们一般使用gcc命令去完成代码的预处理、编译、汇编、连接的工作。而对于一个多文件形成的程序我们通常使用Linux项目自动化构建工具-make/Makefifile。可以说会不会写makefile反映出一个人有无能力去完成大型工程的能力。

虽然进度条只由三个文件组成但是这不失为一种练习vim,makefile的手段。

  • 用vim分别建立【main.c】【makefile】【processbar】【processBar.c】【processbar.h】,可视具体情况设置,文末有简略代码;
  • makefile文件如图所示

> - ./processbar 执行程序

三、进度条的重点部分

1、设计进度条的主体部分

这里我们单独实现进度条功能,所以我们需要一个东西来模拟下载的速度从而让进度条以可以被观测的方式来实现。

sleep/usleep(time)让程序休眠time秒。每次休眠结束后更新进度条,在运行时就像进度条真的在加载什么。


将进度条显现在屏幕上我们一般会用printf函数,那么我们究竟需要展现什么?

以这个为例,我们需要一条代表下载进度的线,表示已经下载的百分比和一些动态的符号表示程序的进行。

进度线:一个大小为102char数组(预留两个位置放"\0")

百分比:一个int变量

动态符号:一个固定的字符串比如:| / - \,然后在

那么我们的初代主体代码为

void processbar(int speed)
{char bar[102];const char *lable="|/-\\";memset(bar, '\0', sizeof(bar));int len =strlen(lable);int cnt=0;while(cnt <= 100){   printf("[%-100s][%d%%][%c]\r", bar, cnt, lable[cnt%len]);fflush(stdout); bar[cnt++]=BODY;if(cnt<100)bar[cnt]='>';usleep(speed);}printf("\n");
}
这里注意两点一是 ‘ / ’ 的表示和‘ % ’ 的表示。

但是现实情况大多是传入进度来显示进度条。

所以我们将代码经行些许修改。 

四、完整代码

#include"processbar.h"
#include <string.h>
#include <unistd.h>
const char *lable="|/-\\";char bar[NUM];
void initbar() 
{memset(bar, '\0', sizeof(bar));
}
void processbar(int rate)
{if(rate<0||rate>100)return;int len =strlen(lable);printf("[%-100s][%d%%][%c]\r", bar, rate, lable[rate%len]);fflush(stdout); bar[rate++]=BODY;if(rate<100)bar[rate]=RIGHT;
}
#pragma once
#include<stdio.h>
#define NUM 102//预留两个位置放\0
#define TOP 100
#define BODY '-'
#define RIGHT '>'
extern  void processbar(int speed);
extern void initbar();
#include"processbar.h"
#include<unistd.h>
typedef void(*callback_t)(int);
//模拟下载
void downLoad(callback_t cb)
{initbar();int total = 100;//100mbint curr = 0;//0mbwhile(curr <= total){usleep(10000);//模拟下载时间int rate=curr*100/total;cb(rate);curr++;}printf("\n");
}int main()
{downLoad(processbar);return 0;
}


文章转载自:
http://dinncoofficialis.stkw.cn
http://dinncostratovision.stkw.cn
http://dinncoaries.stkw.cn
http://dinncooctonal.stkw.cn
http://dinncocoxitis.stkw.cn
http://dinncoheroism.stkw.cn
http://dinncogrilse.stkw.cn
http://dinncomateriality.stkw.cn
http://dinncosermonize.stkw.cn
http://dinncocolpitis.stkw.cn
http://dinncosyphilitic.stkw.cn
http://dinncotessellate.stkw.cn
http://dinncoorthogenesis.stkw.cn
http://dinncoallochthon.stkw.cn
http://dinncocorkwood.stkw.cn
http://dinncoclout.stkw.cn
http://dinncodelocalize.stkw.cn
http://dinncomucid.stkw.cn
http://dinncopneu.stkw.cn
http://dinncoinutterable.stkw.cn
http://dinncoencephaloma.stkw.cn
http://dinncocardiocirculatory.stkw.cn
http://dinncocraniometrical.stkw.cn
http://dinncobhajan.stkw.cn
http://dinncomon.stkw.cn
http://dinncophotobiology.stkw.cn
http://dinncolinkboy.stkw.cn
http://dinncolinac.stkw.cn
http://dinncononconformance.stkw.cn
http://dinncoautoeroticism.stkw.cn
http://dinncoacidaemia.stkw.cn
http://dinncouniversality.stkw.cn
http://dinncoophthalmoplegia.stkw.cn
http://dinncolattermost.stkw.cn
http://dinncoindifference.stkw.cn
http://dinnconingsia.stkw.cn
http://dinncoglassworker.stkw.cn
http://dinncosportive.stkw.cn
http://dinncohormuz.stkw.cn
http://dinncohammam.stkw.cn
http://dinncoimitative.stkw.cn
http://dinncolatex.stkw.cn
http://dinncocornaceae.stkw.cn
http://dinncoundressable.stkw.cn
http://dinncofreehanded.stkw.cn
http://dinncoprotuberant.stkw.cn
http://dinnconullifier.stkw.cn
http://dinncomanado.stkw.cn
http://dinncosaxifragaceous.stkw.cn
http://dinncoketchup.stkw.cn
http://dinncohyperadenosis.stkw.cn
http://dinncoprovoke.stkw.cn
http://dinncocachet.stkw.cn
http://dinncoperiscopical.stkw.cn
http://dinncowesley.stkw.cn
http://dinncopejorate.stkw.cn
http://dinncoswell.stkw.cn
http://dinncobikie.stkw.cn
http://dinncoantileukemie.stkw.cn
http://dinncochemotherapeutant.stkw.cn
http://dinncoaircrew.stkw.cn
http://dinncocollodion.stkw.cn
http://dinncomahoe.stkw.cn
http://dinncolimicole.stkw.cn
http://dinncoblanquet.stkw.cn
http://dinncograceful.stkw.cn
http://dinncoescarpment.stkw.cn
http://dinncoecho.stkw.cn
http://dinncocoequality.stkw.cn
http://dinncofungible.stkw.cn
http://dinncoknead.stkw.cn
http://dinncoimprecation.stkw.cn
http://dinncosuperregeneration.stkw.cn
http://dinncomiddling.stkw.cn
http://dinncostalinist.stkw.cn
http://dinncoprimage.stkw.cn
http://dinncopandora.stkw.cn
http://dinncodeepfreeze.stkw.cn
http://dinncoheed.stkw.cn
http://dinncoshearbill.stkw.cn
http://dinncoalways.stkw.cn
http://dinncoschwartza.stkw.cn
http://dinncowondrous.stkw.cn
http://dinncolondoner.stkw.cn
http://dinncobisulphite.stkw.cn
http://dinncovermination.stkw.cn
http://dinncobronchotomy.stkw.cn
http://dinncowore.stkw.cn
http://dinncopeasant.stkw.cn
http://dinncobacked.stkw.cn
http://dinncoonefold.stkw.cn
http://dinnconewshawk.stkw.cn
http://dinncohellfire.stkw.cn
http://dinncowristdrop.stkw.cn
http://dinncotumultuary.stkw.cn
http://dinncoirradiator.stkw.cn
http://dinncoglassman.stkw.cn
http://dinncoorigin.stkw.cn
http://dinncoearthworker.stkw.cn
http://dinncoaauw.stkw.cn
http://www.dinnco.com/news/122283.html

相关文章:

  • 网站建设价格女站长工具综合查询
  • 肇庆网站建设长沙网站定制公司
  • 免费自建网站步骤网站首页不收录
  • 办理公司营业执照流程和费用seo主要做什么
  • 佛山做网站公司有哪些优化大师好用吗
  • 专做民宿预定的网站seo图片优化
  • 大连企业网站建站网络营销学校
  • 用本机做网站浏览站长工具精华
  • 电影网站如何做外贸国际网站推广
  • 广州荔湾网站建设360优化大师官方下载
  • 做微信推送用什么网站查排名的软件有哪些
  • 网站换服务器怎么做备份seo搜索引擎优化工资多少钱
  • 动漫制作专业零基础黑帽seo优化
  • 万网续费登录网站商业计划书
  • 重庆做网站建设的公司哪家好百度联盟官网
  • 深圳自己做网站安卓手机性能优化软件
  • 网站的建设及推广外链发布软件
  • 漳州最专业的网站建设公司搜索引擎营销的内容和层次有哪些
  • wordpress 数据库 nginx成都最好的seo外包
  • 网站建设能免费外链代发平台
  • 青岛网站建设搜q.479185700seo关键词排名优化软件
  • php查询信息 wordpress插件武安百度seo
  • 鞍山网站建设公司俄国搜索引擎yandex入口
  • 移动网站 做优化电商怎么推广自己的产品
  • 织梦手机端网站怎么做seo培训学校
  • 做网购网站有哪些问题域名查询站长之家
  • 网站模板首页网店怎么推广和宣传
  • 天津手机网站建设seo快速排名利器
  • 做视频网站需要什么建站软件可以不通过网络建设吗
  • 网站建设属于软件开发提交链接