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

跳转到手机网站代码网站建设费交文化事业

跳转到手机网站代码,网站建设费交文化事业,哈尔滨网站建设公司,论坛搭建一键[Linux]制作进度条小程序 文章目录 [Linux]制作进度条小程序C语言中的\n和\r字符缓冲区的刷新策略进行进度条代码编写 C语言中的\n和\r字符 C语言中字符分为两种: 可显字符控制字符 其中可显字符就是字符a这类的字符#xff0c;控制字符就是\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系统的休眠函数。 执行结果如下: 在打印完hello world后,程序休眠光标在同一行的下一个位置 休眠结束后将会接着从光标位置开始打印因此打印的[qxmaliyun-centos review]$命令行提示符紧跟在hello world其后。 再执行如下代码 #include stdio.h #include unistd.h int main() {printf(hello world\n); sleep(3);return 0; }执行结果如下: 由于\n被C语言解析成换行加回车在打印完hello world后程序休眠光标会到下一行的开始的位置。 休眠结束后将会接着从光标位置开始打印因此[qxmaliyun-centos review]$命令行提示符是在下一行的行首打印。 最后执行如下代码 #include stdio.h #include unistd.h int main() {printf(hello world\n); sleep(3);return 0; }说明: fflush(stdout)是将标准输出缓冲区刷新便于观察现象。sleep为Linux系统的休眠函数。 执行结果如下: 由于\r为回车在打印完hello world后程序休眠光标会回到行首。 休眠结束后将会接着从光标位置开始打印因此[qxmaliyun-centos review]$命令行提示符将原有的hello world覆盖了。 缓冲区的刷新策略 Linux系统下C语言会将要打印的字符先存放在缓冲区中只有将缓冲区内的字符刷新到屏幕上才能在屏幕上看到缓冲区刷新的情况如下: 遇到\n会将\n前的所有字符刷新到屏幕上。程序结束时自动刷新缓冲区。 对于缓冲区测试我们执行如下代码: #include stdio.h #include unistd.h int main() {printf(hello world\r);sleep(3);return 0; }执行结果如下: 因为缓冲区没有刷新因此程序休眠时没有任何打印。 程序执行结束后缓冲区被自动刷新,hello world被打印出来但是由于\r回车将光标退回到行首因此命令提示符的打印将前面的打印覆盖了。 再执行如下代码: #include stdio.h #include unistd.h int main() {printf(hello world\n);sleep(3);return 0; }执行结果如下: 由于遇到了\n缓冲区内的数据在休眠前刷新了。 程序休眠结束后命令行提示符从光标所在位置开始打印。 进行进度条代码编写 创建以下文件构成代码结构: 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个字符长度打印 每次打印完回车覆盖上一次从打印并且刷新缓冲区使得打印显示到屏幕上使用休眠函数来充当进度的加载。 打印的效果如下: 除了图形化进度条还要设置数字化进度显示,因此需要对打印进行修改如下: printf([%-100s][%d%%]\r, buf, i);增加打印进度百分比作为数据化进度显示%%将会转义成一个%打印在屏幕上。 打印的效果如下: 最后增添一个旋转光标表示进度条正在不断执行,因此需要对打印再进行修改得到最终的代码如下: #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输出。 最终进度条的演示结果如下:
http://www.hkea.cn/news/14553015/

相关文章:

  • 东莞市公司网站建设平台网站的访问量统计怎么做
  • 毕设做系统与网站答辩学校网站用什么模板好
  • 福州软件网站开发培训班用户界面设计与制作
  • 如何上传模板到网站aspcms 网站地图
  • 吴江住房城乡建设局网站奢侈品
  • 做网站收入怎么样国外h5制作网站模板下载
  • 网站后台密码忘了怎么办抖音代运营话术
  • 商业空间设计网站大全专门做简历的网站
  • 合肥做网站多少钱什么是响应式网页设计
  • php视频网站开发网站建设百家号
  • 企业网站架构网站的推广费用票可以做抵扣吗
  • 惠州网站搭建移动端网站建站视频教程
  • 优秀国外网站chatgpt openai
  • 中山专业门户网站制作咨询机场网站建设需求
  • 响应网官方网站网站销售方案
  • 建站之星做出的网站不安全下载中国建设银行官网站
  • 自己如何建企业网站网站建设服务商是什么
  • 潜江建设局网站杭州网页设计
  • 杭州做网站自助网站建设软件
  • 百度推广包做网站吗临沂网站建设公司招聘
  • 国外做兼职的网站有哪些wordpress 分类目录页面
  • 网站群建设存在的问题洪山网站建设公司
  • 河源网站建设多少钱各种网站
  • 厦门网站个人制作泰州网站建设方案推广
  • 张掖网站建设培训班html5经典网站
  • 帝国cms手机网站教程二建注册查询系统
  • asp.net个人网站空间如何利用微博推广网站
  • 高端网站建设怎么报名北京公关公司最好的公司
  • 重庆网站建设求职简历婚纱摄影网站模板免费下载
  • 济南营销网站制作公司哪家好黄陂机械加工网