• Linux小程序-进度条


    回车和换行

    回车是回到当前行的起始位置

    换行是从当前位置直接跳到下一行与起始位置距离相同的位置,但是换行一般和回车是一起的,所以换行通常会跳到下一行的起始位置

    行缓冲区概念

    在Linux下用vim编辑这么一段代码

    编译后运行看看效果

    看上去似乎是sheep(3)这条语句先执行的

    然而其实上一条打印语句早就被执行完了,只是没有立刻被显示出来

    C语言是会给我们提供一个输出缓冲区的,根据特定的刷新策略来进行刷新,一般的刷新策略是行刷新,遇到\n,就会把\n之前的字符全部都显示出来

    所以hello world才会在最后显示出来


    修改一下,在hello world 最后加上\n

    编译运行

     hello world第一时间就被显示出来了,这是因为加了\n


    用fflush语句也可以达到同样刷新的效果

    编译运行

     

    只不过是在同一行上,没有进行换行


    接下来看看回车的效果

    编译运行

    可以看到先是打印出hello world,然后光标回到行的起始位置,这就是回车


    如果把fflush这条刷新缓冲区的语句去掉呢?

    编译运行

    可以看到什么也没有打印出来,这是因为内容在缓冲区上一直没有被刷新


    实现进度条

    1. #include
    2. #include
    3. #include
    4. int main()
    5. {
    6. //创建一个全是#的数组
    7. char a[101] = {0};
    8. memset(a, '#', 100);
    9. int i = 99;//指针从最后一个#开始往前
    10. const char* lable = "|/-\\";
    11. while(i != -1)
    12. {
    13. printf("[%-100s][%d%%][%c]\r", a+i, 100-i, lable[i%4]);
    14. fflush(stdout);
    15. usleep(100000);
    16. i--;
    17. }
    18. printf("\n");
    19. return 0;
    20. }

     编译运行

     

  • 相关阅读:
    uniapp项目实践总结(十五)使用websocket实现简易聊天室
    E: Unable to locate package XXX
    vue3.2单文件组件 <script setup> 语法糖常用写法
    软件开发工程师谈测试金字塔实践
    星星的等级和财富水平
    一文讲透Java核心技术之高可扩展利器SPI
    复选框 前端代码
    【Mybatis】Map传参和模糊查询
    HTML 学习笔记(七)列表
    华为机考入门python3--(35)牛客35-蛇形矩阵
  • 原文地址:https://blog.csdn.net/l_shadow_m/article/details/126053402