Linux第一个小程序-进度条(c语言版)

目录

行缓冲区概念:

行缓冲区代码演示:

​编辑进度条代码

1:memset函数:

[2:const char* lable="|/-\\";](#2:const char* lable="|/-\";)

[3:usleep C语言 usleep 函数的功能和用法:](#3:usleep C语言 usleep 函数的功能和用法:)

4:进度条代码的实现.c文件与.h文件:

​编辑​编辑5:运行截图

​编辑进度条代码的实用性优化

优化1:processbar函数内部循环改为使用者自己设计的download外部循环:

优化2:使用函数回调展示进度


行缓冲区概念:

在学习进度条小程序之前,我们要先了解行缓冲区概念:

首先:在Linux中,行缓冲是一种缓冲方式,它指定了输出流何时刷新到文件或终端。根据行缓冲的概念,当输出到流的数据遇到换行符('\n')时, 缓冲区会被自动刷新,并将数据发送到文件或终端。总结 : 当遇到换行符('\n')时,缓冲区的输出会立即显示出来。

其次:在另一方面,如果没有遇到换行符,那么数据将保留在缓冲区中,直到达到以下条件之一:

  1. 缓冲区已满,需要清空缓冲区来容纳更多数据。
  2. **fflush()**函数被调用,强制刷新缓冲区。---- > fflush(stdout); 包含头文件 #include<unistd.h>

**fflush(stdout)**是一个函数调用,它强制刷新stdout(标准输出)流的缓冲区。通过调用这个函数,你可以确保在遇到换行符之前,所有的输出都立即显示。

行缓冲区代码演示:

例如,在下面的代码中,printf()函数在遇到换行符时会自动刷新缓冲区:

如果你希望立即显示"Hello ",可以使用**fflush()**函数来强制刷新缓冲区:

进度条代码

1:memset函数:

在C语言中,memset函数用于将内存区域设置为指定值。它的功能和用法如下:

void *memset(void *ptr, int value, size_t num);

  • ptr:指向要设置的内存区域的指针。
  • value:要设置的指定值。
  • num:要设置的字节数。

memset函数将指定的内存区域中的所有字节设置为指定的值。它接受三个参数:指向要设置的内存区域的指针、要设置的指定值和要设置的字节数。

2:const char* lable="|/-\\";

这是模拟正在加载转圈圈,其中"\\"运用了转义字符

3:usleep C语言 usleep 函数的功能和用法:

在C语言中,usleep 函数用于让程序暂停执行一定的微秒数(以百万分之一秒为单位,微秒)。这对于需要在程序中引入延迟以控制执行顺序或模拟实时性的情况非常有用。

4:进度条代码的实现.c文件与.h文件:

5:运行截图

进度条代码的实用性优化

左边是processBar.c 右边时main函数

优化1:processbar函数内部循环改为使用者自己设计的download外部循环:

优化2:使用函数回调展示进度

相关推荐
不解不惑8 分钟前
OpenAI whisper 语音识别服务器搭建
服务器·whisper·语音识别
gaize121317 分钟前
适合业务规模较大的场景的服务器测评
服务器
wdfk_prog18 分钟前
[Linux]学习笔记系列 -- [kernel]workqueue
linux·笔记·学习
wdfk_prog19 分钟前
[Linux]学习笔记系列 -- [kernel]usermode_helper
linux·笔记·学习
weixin_4365250721 分钟前
使用 idea 命令行构建 Docker 镜像并部署到云服务器
linux·docker·github
悠悠121381 小时前
告别Zabbix?我用Netdata只花10分钟就搞定了50台服务器的秒级监控(保姆级实战)
运维·服务器·zabbix
天庭鸡腿哥1 小时前
大小只有4K的软件,可让系统瞬间丝滑!
运维·服务器·windows·microsoft·everything
虚伪的空想家1 小时前
华为昇腾Atlas 800 A2物理服务器开启VT-d模式
运维·服务器·ubuntu·kvm·vt-d·直通
学渣676561 小时前
服务器端口映射
运维·服务器
红袜子i1 小时前
【问题】实验室服务器恢复记录,一个主板挂两张显卡,
运维·服务器