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

哪些网站可以免费发布广告seo关键词排名查询

哪些网站可以免费发布广告,seo关键词排名查询,北京企业信用信息网官网,医院网站建设联系方式[Linux]制作进度条小程序 文章目录 [Linux]制作进度条小程序C语言中的\n和\r字符缓冲区的刷新策略进行进度条代码编写 C语言中的\n和\r字符 C语言中字符分为两种: 可显字符控制字符 其中可显字符就是字符a这类的字符,控制字符就是\n这种控制字符。 对于我们制作…

[Linux]制作进度条小程序

文章目录

  • [Linux]制作进度条小程序
    • C语言中的\n和\r字符
    • 缓冲区的刷新策略
    • 进行进度条代码编写

C语言中的\n和\r字符

C语言中字符分为两种:

  • 可显字符
  • 控制字符

其中可显字符就是字符a这类的字符,控制字符就是\n这种控制字符。

对于我们制作进度条,我们只需要关注两个控制字符:

  • \r – 进行回车操作
  • \n – 进行换行加回车操作

说明: \n本身是换行字符,但是C语言本身将其解析成了换行加回车。

为了更好地体会字符\r和\n的作用,我们需要做一些测试,为了方便进行编译,创建makefile文件,文件内容如下:

mytest:test.cgcc -o mytest test.c
.PHONY:clean
clean:rm -f mytest

首先执行如下代码:

#include <stdio.h>
#include <unistd.h>
int main()
{printf("hello world");sleep(3);fflush(stdout);return 0;
}

说明:

  • fflush(stdout)是将标准输出缓冲区刷新,便于观察现象。
  • sleep为Linux系统的休眠函数。

执行结果如下:

image-20230730125207629

在打印完hello world后,程序休眠,"光标"在同一行的下一个位置

image-20230730125310098

休眠结束后,将会接着从光标位置开始打印,因此打印的[qxm@aliyun-centos review]$命令行提示符,紧跟在hello world其后。

再执行如下代码:

#include <stdio.h>
#include <unistd.h>
int main()
{printf("hello world\n"); sleep(3);return 0;
}

执行结果如下:

image-20230730125541374

由于\n被C语言解析成换行加回车,在打印完hello world后程序休眠,"光标"会到下一行的开始的位置。

image-20230730123307921

休眠结束后,将会接着从光标位置开始打印,因此[qxm@aliyun-centos review]$命令行提示符是在下一行的行首打印。

最后执行如下代码:

#include <stdio.h>
#include <unistd.h>
int main()
{printf("hello world\n"); sleep(3);return 0;
}

说明:

  • fflush(stdout)是将标准输出缓冲区刷新,便于观察现象。
  • sleep为Linux系统的休眠函数。

执行结果如下:

image-20230730130940986

由于\r为回车,在打印完hello world后程序休眠,"光标"会回到行首。

image-20230730123307921

休眠结束后,将会接着从光标位置开始打印,因此[qxm@aliyun-centos review]$命令行提示符将原有的hello world覆盖了。

image-20230730131108150

缓冲区的刷新策略

Linux系统下,C语言会将要打印的字符先存放在缓冲区中,只有将缓冲区内的字符刷新到屏幕上,才能在屏幕上看到,缓冲区刷新的情况如下:

  • 遇到\n会将\n前的所有字符刷新到屏幕上。
  • 程序结束时自动刷新缓冲区。

对于缓冲区测试,我们执行如下代码:

#include <stdio.h>
#include <unistd.h>
int main()
{printf("hello world\r");sleep(3);return 0;
}

执行结果如下:

image-20230730132019107

因为缓冲区没有刷新,因此程序休眠时,没有任何打印。

image-20230730133131040

程序执行结束后,缓冲区被自动刷新,hello world被打印出来,但是由于\r回车将"光标"退回到行首,因此命令提示符的打印将前面的打印覆盖了。

再执行如下代码:

#include <stdio.h>
#include <unistd.h>
int main()
{printf("hello world\n");sleep(3);return 0;
}

执行结果如下:

image-20230730132354920

由于遇到了\n缓冲区内的数据在休眠前刷新了。

image-20230730132526954

程序休眠结束后,命令行提示符从光标所在位置开始打印。

进行进度条代码编写

创建以下文件构成代码结构:

  • myproc.h – 保存进度条代码的声明
  • myproc.c – 保存进度条代码的实现
  • main.c – 调用进度条代码

myproc.h文件中的核心结构如下:

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

myproc.c文件中的核心结构如下:

#include "myproc.h"
void process()
{//...
}

main.c文件中的核心结构如下:

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

同时创建makefile文件,makefile文件内部写入如下内容:

myproc:myproc.c main.cgcc -o myproc myproc.c main.c
.PHONY:clean
clean:rm -f myproc

建立好代码结构后,编写如下代码充当图形化进度条:

#include "myproc.h"
#include <string.h>
#include <unistd.h>#define STYLE '='
#define ARROW '>'
#define SIZE 101void process()
{char buf[SIZE];memset(buf, 0 , SIZE);int i = 0;while(i <= 100){printf("[%-100s]\r", buf);fflush(stdout);buf[i++] = STYLE;if(i != 100 )buf[i] = ARROW;usleep(100000);}printf("\n");
}

首先创建一个字符串用于保存要打印的图形化进度条buf,对其进行初始化,然后在打印时进行左对齐打印buf并且按100个字符长度打印,

每次打印完回车覆盖上一次从打印,并且刷新缓冲区使得打印显示到屏幕上,使用休眠函数来充当进度的加载。

打印的效果如下:

111

除了图形化进度条还要设置数字化进度显示,因此需要对打印进行修改,如下:

printf("[%-100s][%d%%]\r", buf, i);

增加打印进度百分比作为数据化进度显示,%%将会转义成一个%打印在屏幕上。

打印的效果如下:

222

最后增添一个旋转光标表示进度条正在不断执行,因此需要对打印再进行修改,得到最终的代码如下:

#include "myproc.h"
#include <string.h>
#include <unistd.h>#define STYLE '='
#define ARROW '>'
#define SIZE 101void process()
{const char* cursor = "|/-\\";char buf[SIZE];memset(buf, 0 , SIZE);int i = 0;while(i <= 100){printf("[%-100s][%d%%][%c]\r", buf, i, cursor[i%4]);fflush(stdout);buf[i++] = STYLE;if(i != 100 )buf[i] = ARROW;usleep(100000);}printf("\n");
}

添加了cursor字符串保存旋转光标的样式,其中\\会转义成一个\,因为旋转光标中是将4个字符循环打印因此将样式字符串模4输出。

最终进度条的演示结果如下:

333


文章转载自:
http://inesculent.c7500.cn
http://verbosity.c7500.cn
http://petiolar.c7500.cn
http://floorboard.c7500.cn
http://boost.c7500.cn
http://depersonalize.c7500.cn
http://feta.c7500.cn
http://shilling.c7500.cn
http://menage.c7500.cn
http://circumambient.c7500.cn
http://skite.c7500.cn
http://hibachi.c7500.cn
http://narvik.c7500.cn
http://exclamation.c7500.cn
http://infield.c7500.cn
http://auding.c7500.cn
http://carthaginian.c7500.cn
http://dent.c7500.cn
http://brazenfaced.c7500.cn
http://amberfish.c7500.cn
http://dynasticism.c7500.cn
http://copartnership.c7500.cn
http://andalusite.c7500.cn
http://indigenization.c7500.cn
http://afflicting.c7500.cn
http://dishclout.c7500.cn
http://lyophilize.c7500.cn
http://jocularity.c7500.cn
http://volitional.c7500.cn
http://imid.c7500.cn
http://amidah.c7500.cn
http://bathhouse.c7500.cn
http://plaintive.c7500.cn
http://skimpily.c7500.cn
http://laboratory.c7500.cn
http://ulminic.c7500.cn
http://medicative.c7500.cn
http://interbang.c7500.cn
http://lithotritize.c7500.cn
http://servient.c7500.cn
http://monocle.c7500.cn
http://secundum.c7500.cn
http://ponderability.c7500.cn
http://garageman.c7500.cn
http://plasm.c7500.cn
http://individually.c7500.cn
http://sparid.c7500.cn
http://axially.c7500.cn
http://paresthesia.c7500.cn
http://schizothymic.c7500.cn
http://overcooked.c7500.cn
http://flick.c7500.cn
http://toothpick.c7500.cn
http://sbc.c7500.cn
http://subjugation.c7500.cn
http://decalcomania.c7500.cn
http://firecracker.c7500.cn
http://balanced.c7500.cn
http://renominee.c7500.cn
http://kingfisher.c7500.cn
http://yair.c7500.cn
http://lava.c7500.cn
http://unscathed.c7500.cn
http://integrand.c7500.cn
http://wvs.c7500.cn
http://inexhaustibly.c7500.cn
http://cognisant.c7500.cn
http://lipase.c7500.cn
http://cetane.c7500.cn
http://raindrop.c7500.cn
http://viridin.c7500.cn
http://weiner.c7500.cn
http://eaprom.c7500.cn
http://permutation.c7500.cn
http://expire.c7500.cn
http://zonal.c7500.cn
http://malibu.c7500.cn
http://prf.c7500.cn
http://rurales.c7500.cn
http://polytene.c7500.cn
http://lichi.c7500.cn
http://kaiak.c7500.cn
http://unintermitted.c7500.cn
http://sterilize.c7500.cn
http://saprobiology.c7500.cn
http://hiccough.c7500.cn
http://reducer.c7500.cn
http://vocal.c7500.cn
http://acrylate.c7500.cn
http://recapture.c7500.cn
http://emitter.c7500.cn
http://stylobate.c7500.cn
http://quickie.c7500.cn
http://virginia.c7500.cn
http://homochrome.c7500.cn
http://maltreat.c7500.cn
http://judicial.c7500.cn
http://crummy.c7500.cn
http://hoarder.c7500.cn
http://fumet.c7500.cn
http://www.zhongyajixie.com/news/72788.html

相关文章:

  • 长沙建立网站优化模型数学建模
  • 备案网站域名查询ip软件点击百度竞价推广
  • ofbiz做的网站网络营销的工具和方法有哪些
  • 景点网站应该怎么做软文代写平台
  • 怎么做企业销售网站web制作网站的模板
  • axure做网站教学视频成人技术培训班有哪些种类
  • 建企业网站行业网百度网盟推广官方网站
  • 做海报那个网站好营销培训课程视频
  • 义乌专业做网站的腾讯广告联盟官网
  • 网站结构怎么做网络营销未来有哪些发展趋势
  • 东莞网上推广找谁网站优化推广软件
  • 如何远程连接 网站 数据库谷歌推广一年多少钱
  • 做景观园林的网站是优化网站关键词优化
  • 网站静态化设计青岛网站排名提升
  • 北京网站建设公司 北京网站设计 网页设计制作 高端网站建设 分形科技网站推广的目的
  • 设计类型的网站企业品牌推广
  • 盗版小说网站怎么做的百度如何快速收录
  • 犀牛云做网站骗人四川seo多少钱
  • 专业做动漫的网站网站排名优化制作
  • 网站建设工资怎么样淘宝运营
  • 仿网站百度会怎么做江西seo推广方案
  • 微网站如何做微信支付宝支付接口全媒体运营师培训机构
  • 碧海蓝天网站seo赚钱方法大揭秘
  • 曰本真人性做爰网站培训机构专业
  • qq浏览器网页版打开网页郑州百度seo
  • 拓者设计吧官网图片舆情优化公司
  • 蓟县做网站新网站友链
  • 建立带数据库的网站搜索引擎优化的内容包括
  • 秦皇岛哪家做网站好数字化营销怎么做
  • 网站公司做网站环球网最新消息疫情