Linux第一个小程序-进度条

目录

引言:

回车,换行的区分:

 缓冲区:

【sleep】--睡眠    函数:

【fflush】---刷新流:

倒计时功能:

实现从【9~0】的倒计时:

倒计时【10~0】:

显示器打印原理:

进度条小程序:

准备:

主体:

 【memset】函数:

 【usleep】函数:

         百分比、旋转字符:

 进度条高阶:


引言:

         之前前所写的vimgcc/g++make/makefile分别对应如何编辑一个代码文本、如何编译一个代码文本、如何自动化构建一个代码文本。
        接下来用上面的知识写一个liunx小程序---【进度条】。

回车,换行的区分:

换行(\n) —— 新起一行,光标位于行末。
回车(\r) —— 回车是把光标移到开始,即回到当前文本行的首部。

 缓冲区:

【sleep】--睡眠    函数:

> Sleep函数可以使计算机程序(进程,任务或线程)进入休眠,使其在一段时间内处于非活动状态。当函数设定的计时器到期,或者接收到信号、程序发生中断都会导致程序继续执行。

  •   Windows中的sleep()单位是毫秒Linux中的sleep()单位是
  •  其包含在头文件<unistd.h>中,我们通过【man 3 sleep】来进行查看。

 想要查询Linux下的sleep()函数的manue手册,使用man 3 sleep却显示在“第 3 节中没有关于 sleep 的手册页条目”如下图所示:

 需要转成root账号进行:`yum -y install man-pages`,等待安装成功后,换回普通用户可使用【man 3 sleep】,就可以看到头文件<unistd.h>,按【q】键退出。

【fflush】---刷新流:

fflush(stdin)是清空输入缓存的函数,在输入字符之前调用它可以清除之前未读取的字符。
 C语言中一般默认会为我们提供三个流,即【标准输入stdin】、【标准输入stdout】、【标准错误stderror】,一般用来刷新输出流即【stdout】。

代码解释:

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

结果是怎么样的呢??

 
可以看到是先执行了【hello,world】之后停顿了2秒后才结束的。

 #include"processbar.h"
 #include<unistd.h>
     int main()
     {
       printf("hello,world");
     sleep(2);                                                                      
       return 0;
     }

这种把换行符去掉,结果如何?是先出现【hello,world】再睡2秒?or先睡2秒再【hello,world】???

结果显而易见:根据gif动态图看出是先睡2秒再【hello,world】。真的如此吗???
      

 1. 对于这段代码而言,属于顺序执行,所以一定是从上到下执行下来的,因此一定会先打印printf()语句中的内容。
 2.    我们看不到这个内容不代表它不存在,只是它被预存在了缓冲区(就是c语言维护的一段内存)中,因为sleep()函数的缘故,导致这个缓冲区没有被刷新而已,所以它并没有丢失。


接下来看下一段代码及其演示:

#include"processbar.h"
#include<unistd.h>
  
   int main()
   {
     printf("hello,world");
     f
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

J 2

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值