首页 > 系统相关 >【Linux】08.Linux 下的第一个小程序——进度条

【Linux】08.Linux 下的第一个小程序——进度条

时间:2024-09-02 17:54:04浏览次数:11  
标签:进度条 换行 08 打印 Linux 缓冲区 我们 回车

一、知识引入

在写我们的进度条之前需要先引入一下小的知识点:换行与回车,认识缓冲区,认识格式化输出

1.1 换行与回车

换行指的是跳转到下一行的同一个位置
回车指的是跳转到本行开头的位置
新起一行就是换行+回车

但是日常生活中我们见到的换行一般都是使用Enter(回车键)进行的,只是因为特殊处理的缘故
换行的符号是\n,回车的符号是r

1.2 认识缓冲区

我们先引入一个函数sleep(time_t),它的作用就是休眠,单位是秒,头文件是<unistd.h>
接下来我们看下面两端代码
在这里插入图片描述

通过执行,我们发现下面的代码是先打印然后休眠;而上面的代码是先休眠然后打印的。而我们又知道C语言编译器会从上到下的扫描代码,因此输出操作一定是先读入的。那么为什么会造成这样的差异呢?这就是缓冲区的缘故了。
\n是缓冲区的刷新标准符,用以刷新stdout。而没加\n的输出内容被加载到了缓冲区,至于刷新缓冲区才能成功显示内容。
那么我们如何对缓冲区进行刷新呢?对语句进行回车并使用fflush()函数
我们尝试一下发现可以了。
在这里插入图片描述

1.3 认识格式化输出

我们刚刚虽然打印成功输出了,但是休眠完成后发现语句被覆盖了,这又是怎么回事呢?
我们来进行下面这样一个程序:
在这里插入图片描述
我们通过允许发现最后的打印是" 1",我们不是从10打印到1吗?为什么后面会多出来一个0呢?
这就不得不谈到格式化输出了,其实我们也不难发现,实际上我们所看到的数字被解析成了一个个字符然后打印在屏幕上。

二、进度条小程序的编写

我们上面已经了解到了sleep()这个函数,但是他的单位是秒,usleep()也是休眠函数,但它的单位是微秒。
接下来我们写一个简单的进度条小程序:
在这里插入图片描述

但是现实中我们的这个进度条并不仅仅是计数这么简单,接下来我们模拟网络下载数据写一个进阶版的进度条:
在这里插入图片描述

标签:进度条,换行,08,打印,Linux,缓冲区,我们,回车
From: https://blog.csdn.net/2301_80258336/article/details/141645288

相关文章

  • 【Linux修行路】实现一个简单的日志代码
    目录⛳️推荐一、可变参数的使用二、Log2.1日志打印2.1.1时间获取2.1.2日志分块打印2.2打印模式选择2.3Log使用样例2.4Log完整源码⛳️推荐前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站【Linux修行路】动......
  • linux shell grep命令单字匹配
    grep.sh#!/bin/bashE_BADARGS=65if[-z"$1"];thenecho"Usage:`basename$0`pattern"exit$E_BADARGSfiechoforfilein*dooutput=$(sed-n/"$1"/p$file)if[!-z"$output"];thenecho-n"......
  • Linux目录结构基础和Linux核心命令
     前言 想要了解Linux系统,我们先从它的目录结构部分说起。一、Linux目录概述Linux的目录是什么,类似于windows中的文件夹,但是它是以根目录为起始向下延伸,它的表示形式为'/'。 1.1.Linux的核心目录(根下)   根下的核心目录说明/etc/系统服务的配置文件,主要存放一些......
  • springboot多媒体内容管理系统-计算机毕业设计源码08580
    摘 要随着人类向信息社会的不断迈进,风起云涌的信息时代正掀起一次新的革命,同时计算机网络技术高速发展,网络管理运用也变得越来越广泛。因此,建立一个多媒体内容管理系统(CMS)的设计与优化来管理多媒体内容信息,会使管理工作系统化、规范化,提高管理效率。本课题的研究对象是多媒......
  • linux定时重启jar包项目
    1、创建.sh文件touchgtws.sh//创建文件vitouchgtws.sh //编辑文件#!/bin/bash#停止现有程序pkill-fdp-upload.jar#等待三秒时间sleep3#重启项目包nohupjava-jardp-upload.jar>dp-upload.log&#输出提示信息echo"定时任务重启成功"exit注意......
  • P3193 [HNOI2008] GT考试 解题报告
    题目传送门题目大意:给定一个长度为\(m\)且只含\(0\sim9\)的字符串\(s\),求出所有长度为\(n\)的,只含\(0\sim9\)且不含\(s\)字符串的数量,结果对\(mod\)取模。数据范围:\(n\le10^9,m\le20,k\le1000\)。思路:不难发现和这道题很像,只是\(n\)的数据范围被扩大到......
  • 2.Linux编程-库
    命名(习惯):静态库:.lib/.a动态库.dll/.so静态库的命名一般分为三个部分:前缀:lib库名称:自定义即可,如test后缀:.a共享库的命名一般分为三个部分:前缀:lib库名称:自己定义即可,如test后缀:.so库制作完成后,如何给用户使用头文件—包含了库函数的声明库文件—包含了库函数的代......
  • 【树莓派开发】使用树莓派在Linux环境下编写C语言代码
    文章目录前言1.创建test.c文件2.编译运行该文件3.编译并链接两个源文件结语前言如何使用树莓派编译C语言代码呢?21年暑假的时候,学习编程的劲头高涨,然后冲动消费买了个树莓派4B……结果压根不会用,吃灰了半年不过现在已经学完了C语言,也接触了一丢丢Linux系统下的gcc指令,可以尝试用它......
  • linux PS1
    最近不小心动了环境变量的PS1老是感觉很奇怪然后研究了一下PS1可以支持以下这些选项:\d:显示曰期,格式为"星期月日"。\H:显示完整的主机名。如默认主机名"localhost.localdomain"。\h:显示简写的主机名。如默认主机名"localhost"。\t:显示24小时制时间,格式为"HH:MM:SS"。......
  • 微软win11安装助手报0x80888002错误的解决方法(官方工程师方法)
    报错介绍这个错误是因为检测电脑是否可以安装导致,通常出现在安装阶段75%,第一次会重新安装,第二此会报0x80888002错误。解决方法在https://www.microsoft.com/zh-cn/software-download/windows11中下载win11ISO镜像文件,打开镜像,双击sources/setup,在选择升级还是覆盖安装时选择覆......