• Linux 小程序————进度条


    目录

    引子

    缓冲区

    回车换行

    进度条小程序


    引子

    前期我已经和大家聊过Linux一些常用指令、权限、gcc翻译过程、make/makefile 等相关知识,今天结合这些基础知识来写一个Linux下的小程序。

    缓冲区

    Linux目录下创建两个文件:makefile 和 project.c ,在project.c中写一个简单的打印hello world,并让其休眠2秒后打印。

     仔细看,左边helloworld后跟了 ' \n ' ,此时出去执行make,语句被直接打印出来;

    右边hello world后没跟 ' \n ',此时出去执行make,语句过了两秒才被打印出来。

    说明:

    1、程序执行默认是按顺序结构执行(没有判断、循环情况下),所以一定是printf 先于sleep执行,但是先执行 != 数据先显示,printf的确执行了但是没有显示出来而执行了sleep休眠。当sleep结束时才刷新的数据。

    2、sleep期间printf 一定执行完打印了,那数据在哪里呢?——在缓冲区。当sleep执行完,缓冲区的数据才打印到终端上。

    3、那为什么' \n '直接打印了?—— ' \n '是行缓冲,只要有,这一行包括前面的内容就打印到终端

    4、有什么办法可以在没有 ' \n '的情况下直接打印————fflush(stdout) 刷新标准输出流。

    回车换行

    1、回车:\r ,这里的回车不是我们口头上说的回车,口头上的回车其实是回车+换行。

    这里回车是让光标回到一行的开始(覆盖)

    2、换行:\n,换行是换到下一行的该位置。

    3、回车换行:\r + \n,即口头上的回车,跳到下一行的开头。

      老式键盘上的回车键意思就是回车+换行。

     根据这个结合上面的缓冲区,可以写一个倒计时小程序

     注意:1、%2d \r,不用\n,因为倒计时需要在一行内执行,所以不需要换行,\r 让光标回退到一行开始处,会覆盖之前的内容。

               2、%2d,格式控制为2个字符位,否则修改的只是第一个字符位的内容。cnt = 10,%d倒计时就是10,90,80...   

               3、fflush(stdout)刷新标准输出流,否则将没有打印显示(因为缓冲区问题)

    进度条小程序

     接下来我们写一个进度条小程序,也是运用上面的知识。

     prograss.c:

  • 相关阅读:
    iconfont使用简介
    基于RTSP协议的实时视频流传输的源码分析
    基于Docker的RStudio-server构建
    mac 安装及配置vue
    S-Clustr(影子集群) 重磅更新!黑入工业PLC设备!
    聚华祥科技:提高店铺转化率的技巧
    将时间序列转成图像——希尔伯特-黄变换方法 Matlab实现
    Java语言实现 比较两个Date日期的先后
    21.3 Python 使用DPKT分析数据包
    Axure Cloud如何给每个原型配置私有域名
  • 原文地址:https://blog.csdn.net/SAKURAjinx/article/details/127556413