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

中国建设网站下载安装网站免费制作

中国建设网站下载安装,网站免费制作,成功的o2o平台有哪些,可以做外链的图片网站文章目录 一、前提引入🎗️下面的代码什么现象?🎗️下面的代码什么现象? 二、缓冲区三、回车换行🎗️注意🎗️图解🎗️老式回车键造型(意思是充当两个动作)🎗…

文章目录

  • 一、前提引入
    • 🎗️下面的代码什么现象?
    • 🎗️下面的代码什么现象?
  • 二、缓冲区
  • 三、回车换行
    • 🎗️注意
    • 🎗️图解
    • 🎗️老式回车键造型(意思是充当两个动作)
    • 🎗️\r 和 \n
    • 🎗️倒计时代码
      • 代码1
      • 代码2
      • 思考
  • 四、进度条
    • 预想的进度条效果
    • 构想代码结构
    • (一)简单原理版本
      • Makefile
      • process.c
      • process.h
      • main.c
      • 重点代码解读
      • 进度条效果
    • (二)实际工程实践版本
      • 下载逻辑
      • Makefile
      • process.c
      • process.h
      • main.c
      • 重点代码解读
      • 改进
      • process.h
      • main.c
      • 总结
    • (三)简单的美化风格
      • Makefile
      • process.c
      • process.h
      • main.c
      • 进度条效果
      • 模拟加载中效果
        • process.c
        • process.h
        • main.c
        • Makefile
        • 重点代码解读
        • 进度条效果
      • C语言扩展--给进度条带上颜色

在这里插入图片描述

一、前提引入

🎗️下面的代码什么现象?

在这里插入图片描述
🎗️现象:马上打印出Hello Makefile!
在这里插入图片描述

🎗️下面的代码什么现象?

在这里插入图片描述
🎗️现象:停留三秒后打印出Hello Makefile!
在这里插入图片描述

现象是先sleep!但是一定是printf先执行,printf早就执行了,只不过字符串没有被显示出来罢了。所以在sleep期间,字符串在哪里?
答案:在输出缓冲区。

二、缓冲区

🎗️C/C++语言,会针对标准输出,给我们提供默认的缓冲区。
🎗️输出缓冲区在哪里呢?

在标准输出流。C/C++默认会打开三个文件流:标准输入流、标准输出流、标准错误流。

🎗️fflush(stdout) 刷新缓冲区
🎗️\n 是一种刷新的策略 行刷新

C程序是默认有输出缓冲区的,数据输出时会默认放在输出缓冲区。之所以可以立马见到数据,是因为该数据被刷新了;如果没有立马见到它,该数据没有被刷新,被暂存在输出缓冲区stdout当中。强制刷新fflsh(stdout)可使数据立马显示出来。

三、回车换行

🎗️注意

回车换行是两个动作
回车是让光标回到该行的最开始位置
换行是换到下一行

🎗️图解

在这里插入图片描述

🎗️老式回车键造型(意思是充当两个动作)

在这里插入图片描述

🎗️\r 和 \n

🎗️在C语言中,\r代表回车,\n代表换行
🎗️在Linux中,\r代表回车,\n代表回车和换行

🎗️倒计时代码

代码1

在这里插入图片描述
效果
形成一个9到1的倒计时效果(打印完一个数字,回车回到最开始打印,下一个数字覆盖上一个数字的打印结果)
注意:如果没有刷新缓冲区那句代码,那么什么也不会显示出来。

代码2

在这里插入图片描述
🎗️效果
形成一个从100的倒计时
🎗️注意点
控制两位字符的输出宽度,可达到10的倒计时效果;控制三位字符的输出宽度,可达到100的倒计时效果。控制几位字符就在%d的d前面加数字。
输出结果如果不设置对齐方式,可能会出现覆盖从而达不到预想效果。输出结果左对齐,在%后加上-

思考

🎗️我们向显示器打印的数字真的是数字吗?

答案:不是
往显示器输出123,实际上输出的是1字符,2字符,3字符。
显示器只能显示字符。
因此显示器叫做显示器字符设备。

🎗️我们从键盘上读取到的内容,是什么呢?

b比如说我们从键盘输入1234,键盘读取到的并不是一千两百三十四,而是1字符、2字符、3字符、4字符,然后由scanf将字符串转成整数,放到对应的变量里,这样才有了整数。

四、进度条

预想的进度条效果

在这里插入图片描述

构想代码结构

在这里插入图片描述

(一)简单原理版本

Makefile

process:process.c main.cgcc -o $@ $^
.PHONY:clean
clean:rm -f $@

process.c

#include "process.h"
#include<string.h>
#include<unistd.h>#define SIZE 101
#define MAX_RATE 100
#define STYLE '#'
#define STIME 1000*40const char *str="|/-\\";void process(){int rate=0;char bar[SIZE];memset(bar,'\0',sizeof(bar));int num=strlen(str);while(rate<=MAX_RATE){printf("[%-100s][%d%%][%c]\r",bar,rate,str[rate%num]);fflush(stdout);usleep(STIME);  bar[rate++]=STYLE;}printf("\n");
}

process.h

#pragma once #include<stdio.h>
void process();

main.c

#include "process.h"int main(){process();return 0;
}

重点代码解读

在这里插入图片描述

进度条效果

在这里插入图片描述
在这里插入图片描述

(二)实际工程实践版本

下载逻辑

在这里插入图片描述

Makefile

process:process.c main.cgcc -o $@ $^
.PHONY:clean
clean:rm -rf process

process.c

#include "process.h"
#include<string.h>
#include<unistd.h>const char *str="|/-\\";void process_v2(int rate){static char bar[SIZE]={0};int num=strlen(str);if(rate<=MAX_RATE&&rate>=0){printf("[%-100s][%d%%][%c]\r",bar,rate,str[rate%num]);fflush(stdout);bar[rate]=STYLE;}if(rate==MAX_RATE){memset(bar,'\0',sizeof(bar));}
}

process.h

#pragma once #include<stdio.h>
#include<string.h>
#include<unistd.h>#define SIZE 101
#define MAX_RATE 100
#define STYLE '#'
#define STIME 1000*40void process_v2(int);

main.c

#include "process.h"#define TARGET_SIZE 1024*1024
#define DSIZE 1024*10void download(){int target=TARGET_SIZE;int total=0;while(total<target){usleep(STIME);total+=DSIZE;process_v2(total*100/target);}printf("\n");
}//下载的软件
int main(){download();return 0;
}

重点代码解读

在这里插入图片描述
在这里插入图片描述

改进

process.h

#pragma once #include<stdio.h>
#include<string.h>
#include<unistd.h>#define SIZE 101
#define MAX_RATE 100
#define STYLE '#'
#define STIME 1000*40typedef void(*callback_t)(int);
void process_v2(int);

在这里插入图片描述

main.c

#include "process.h"#define TARGET_SIZE 1024*1024
#define DSIZE 1024*10void download(callback_t cb){int target=TARGET_SIZE;int total=0;while(total<target){usleep(STIME);total+=DSIZE;int rate=total*100/target;cb(rate);}printf("\n");
}//下载的软件
int main(){download(process_v2);return 0;
}

在这里插入图片描述

🎗️回调:把一段可执行的代码像参数传递给其他代码,而这段代码会在某个时刻被调用执行,这就叫做回调。
🎗️改进的版本:

这里,将更新显示的进度条的函数process_v2作为参数传递给download函数,在download函数中需要它时就调用它,调用以函数指针的形式来实现回调函数。

总结

版本2进度条不是在进度条函数内部进行循环打印的,这样有点不好,所以我们采用回调的方式,来进行某种任务的通知,动态更新进度条!(在下载任务中调用进度条)

(三)简单的美化风格

Makefile

process:process.c main.cgcc -o $@ $^
.PHONY:clean
clean:rm -rf process

process.c

#include "process.h"
#include<string.h>
#include<unistd.h>const char *str="|/-\\";void process_v3(double rate){static char bar[SIZE]={0};int num=strlen(str);if(rate<=MAX_RATE&&rate>=0){printf("[%-100s][%.1f%%][%c]\r",bar,rate,str[(int)rate%num]);fflush(stdout);if(rate<MAX_RATE){bar[(int)rate]=STYLE_BODY;bar[(int)rate+1]=STYLE_HEAD;}else{bar[(int)rate]=STYLE_BODY;}}
}

在这里插入图片描述

process.h

#pragma once #include<stdio.h>
#include<string.h>
#include<unistd.h>#define SIZE 101
#define MAX_RATE 100
#define STYLE '#'
#define STIME 1000*40
#define STYLE_BODY '='
#define STYLE_HEAD '>'typedef void(*callback_t)(double);
void process_v3(double);

在这里插入图片描述

main.c

#pragma once #include<stdio.h>
#include<string.h>
#include<unistd.h>#define SIZE 101
#define MAX_RATE 100
#define STYLE '#'
#define STIME 1000*40
#define STYLE_BODY '='
#define STYLE_HEAD '>'typedef void(*callback_t)(double);
void process_v3(double);

在这里插入图片描述

进度条效果

在这里插入图片描述
在这里插入图片描述

模拟加载中效果

版本3基础上,模拟实现进度条加载过程中不移动时,数字不改变时,(即现实中加载的资源不足以1%时),后面的光标一直旋转(显示加载中)的效果。

🎗️在process.c和main.c文件中做了修改

process.c
#include "process.h"
#include<string.h>
#include<unistd.h>const char *str="|/-\\";void process_v3(double rate){static char bar[SIZE]={0};int num=strlen(str);static int cnt=0;if(rate<=MAX_RATE&&rate>=0){cnt++;cnt=(cnt>=num?0:cnt);printf("[%-100s][%.1f%%][%c]\r",bar,rate,str[cnt]);fflush(stdout);if(rate<MAX_RATE){bar[(int)rate]=STYLE_BODY;bar[(int)rate+1]=STYLE_HEAD;}else{bar[(int)rate]=STYLE_BODY;}}
}
process.h
#pragma once #include<stdio.h>
#include<string.h>
#include<unistd.h>#define SIZE 101
#define MAX_RATE 100
#define STYLE '#'
#define STIME 1000*40
#define STYLE_BODY '='
#define STYLE_HEAD '>'typedef void(*callback_t)(double);
void process_v3(double);
main.c
#include "process.h"#define TARGET_SIZE 1024*1024
#define DSIZE 1024*10void download(callback_t cb){int testcnt=100;int target=TARGET_SIZE;int total=0;while(total<target){usleep(STIME);total+=DSIZE;double rate=total*100/target;if(rate>50.0&&testcnt){total=target/2;testcnt--;    }cb(rate);}cb(MAX_RATE);printf("\n");
}//下载的软件
int main(){download(process_v3);return 0;
}
Makefile
process:process.c main.cgcc -o $@ $^
.PHONY:clean
clean:rm -rf process
重点代码解读

在这里插入图片描述
在这里插入图片描述

进度条效果

在这里插入图片描述

在这里插入图片描述

C语言扩展–给进度条带上颜色

C语言有具体的语法可以设置不同的颜色,具体内容大家可以自行搜索,为进度条设置自己喜爱的颜色。

在这里插入图片描述
在这里插入图片描述


本篇内容的学习就到这里啦!如果对友友们有帮助的话,可以关注后续的创作内容哦~👻


文章转载自:
http://anemophily.jjpk.cn
http://notalgia.jjpk.cn
http://unintelligence.jjpk.cn
http://allred.jjpk.cn
http://riebeckite.jjpk.cn
http://nicely.jjpk.cn
http://uptilt.jjpk.cn
http://suspense.jjpk.cn
http://aetiological.jjpk.cn
http://jerfalcon.jjpk.cn
http://flattery.jjpk.cn
http://paynim.jjpk.cn
http://firer.jjpk.cn
http://unjealous.jjpk.cn
http://caaba.jjpk.cn
http://outcast.jjpk.cn
http://washingtonian.jjpk.cn
http://smelting.jjpk.cn
http://agglutinant.jjpk.cn
http://snapdragon.jjpk.cn
http://pyrometallurgy.jjpk.cn
http://kurbash.jjpk.cn
http://nonhero.jjpk.cn
http://pithecanthropine.jjpk.cn
http://hemimetabolous.jjpk.cn
http://pannikin.jjpk.cn
http://synesthetic.jjpk.cn
http://dollarwise.jjpk.cn
http://helot.jjpk.cn
http://mycologist.jjpk.cn
http://cicisbeism.jjpk.cn
http://mood.jjpk.cn
http://codetermine.jjpk.cn
http://reddish.jjpk.cn
http://dewindtite.jjpk.cn
http://jis.jjpk.cn
http://channels.jjpk.cn
http://nightmarish.jjpk.cn
http://akvavit.jjpk.cn
http://assheadedness.jjpk.cn
http://flacon.jjpk.cn
http://accredit.jjpk.cn
http://canaliculated.jjpk.cn
http://thickskinned.jjpk.cn
http://poppethead.jjpk.cn
http://childishly.jjpk.cn
http://gollop.jjpk.cn
http://drayman.jjpk.cn
http://extrabold.jjpk.cn
http://academical.jjpk.cn
http://chasid.jjpk.cn
http://tetraxial.jjpk.cn
http://unmediated.jjpk.cn
http://assumed.jjpk.cn
http://alterable.jjpk.cn
http://largamente.jjpk.cn
http://terra.jjpk.cn
http://normothermia.jjpk.cn
http://oiltight.jjpk.cn
http://superimposition.jjpk.cn
http://unsteady.jjpk.cn
http://featherlike.jjpk.cn
http://chuckwalla.jjpk.cn
http://potted.jjpk.cn
http://scrutable.jjpk.cn
http://cashoo.jjpk.cn
http://italianize.jjpk.cn
http://escopeta.jjpk.cn
http://unceasingly.jjpk.cn
http://ryazan.jjpk.cn
http://gaseity.jjpk.cn
http://favour.jjpk.cn
http://serpentine.jjpk.cn
http://coonskin.jjpk.cn
http://eliot.jjpk.cn
http://jumper.jjpk.cn
http://participled.jjpk.cn
http://snifty.jjpk.cn
http://fray.jjpk.cn
http://undee.jjpk.cn
http://theorization.jjpk.cn
http://analogist.jjpk.cn
http://planar.jjpk.cn
http://interpol.jjpk.cn
http://sportsdom.jjpk.cn
http://housekeep.jjpk.cn
http://bioresearch.jjpk.cn
http://hawking.jjpk.cn
http://audiometrist.jjpk.cn
http://chainless.jjpk.cn
http://csa.jjpk.cn
http://winy.jjpk.cn
http://allegorization.jjpk.cn
http://tantalising.jjpk.cn
http://jinricksha.jjpk.cn
http://fatimid.jjpk.cn
http://workboat.jjpk.cn
http://phosphite.jjpk.cn
http://andirons.jjpk.cn
http://crashproof.jjpk.cn
http://www.dt0577.cn/news/115370.html

相关文章:

  • 高端网站建设优化网页广告
  • asp.net网站发布到虚拟主机来宾seo
  • 有做学历在网站能查的到的网站降权查询工具
  • 制作网站商城关键词搜索指数查询工具
  • 如何提高网站访问量市场营销推广
  • 唯品会专门做特卖的网站廊坊百度快照优化哪家服务好
  • 网站建设优化推广一个新的app如何推广
  • 用jsp和mysql做网站合肥百度竞价推广代理公司
  • 怎么创一个网站做网站哪个公司最好
  • 陕西做教学成果网站的公司百度关键词搜索怎么做
  • 长安网站制作公司网站排名优化多少钱
  • 食品包装设计分析全国推广优化网站
  • 青岛网站设计方案免费com域名注册网站
  • 门户网站开发维护合同范本百度竞价点击价格
  • 网站建设维护岗位职责模板网站建设开发
  • 法院门户网站建设情况调研深圳优化公司哪家好
  • 山东招标网官方网站seo攻略
  • 广州网站建设乛新科送推广网络营销教学网站
  • 初学ssm做的网站优化大师好用吗
  • 华宁县住房和城乡建设局网站百度搜索高级搜索技巧
  • 软件开发接单网站西安百度
  • 做网站建设哪家好seo网上培训
  • 怎么做网站网页今日重大事件
  • 邢台网站推广关联词有哪些小学
  • 网站首页url是什么数据分析师培训需要多少钱
  • 买网站做设计参考属于什么费用网络营销师证
  • wordpress接单修改任务关闭站长工具seo综合查询
  • 自建网站做外贸百度文库官网
  • 乐清网络网站建设广州seo网站推广平台
  • 公司内部网站如何备案媒体发稿网