cuteftp 备份网站,旅游网站ppt应做的内容,wordpress 外网访问,做英文网站要用什么字体目录
使用工具的简单介绍#xff1a;
\r #xff1a;
fflush #xff1a;
倒计时的创建#xff1a;
倒计时的工作原理#xff1a; 进度条的创建#xff1a; 不同场景下、打印任意长度的进度条#xff1a;
main .c
procbor.c
测试效果#xff1a; 使用工具… 目录
使用工具的简单介绍
\r
fflush
倒计时的创建
倒计时的工作原理 进度条的创建 不同场景下、打印任意长度的进度条
main .c
procbor.c
测试效果 使用工具的简单介绍
在创建进度条之前首先要明白两个工具fflush 和 \r
\r
熟悉键盘以及经常使用键盘的小伙伴应该知道现在的键盘上的enter 回车键 和早之前的回车键样式是不一样的,如下图所示 而且还有一个大家并不是非常熟悉的知识回车键的功能其实是两个一个是换行一个是回车。
所谓换行就是将光标从这一行变到下一行中且是垂直下落除此之外光标位置不会有其他的移动。
而回车就是回到当前行的最前端最开头位置。
在Linux系统中换行和回车是并不是像键盘上的回车键一样合在一起使用而是分别由两个命令控制着。
\r就是Linux中的回车在Linux的文件文本中的作用是将光标移动到当前行的开头位置即回车。它通常与\n换行符一起使用表示换行并回到行首。
fflush
fflush函数的作用是刷新缓冲区将缓冲区中的数据立即写入到文件中。它可以用来确保数据被及时写入文件而不是等到缓冲区满或程序结束时才写入。
在Linux中通常使用fflush(stdout) 将缓冲区的数据冲刷到显示器上让数据显现。
倒计时的创建
倒计时的工作原理
倒计时指的是在一个位置上的数字随着光标的不断闪烁而不断的更新减小直到为0。
在如果要在Linux上实现倒计时除了上述的两个工具外还需要额外了一个工具sleep 休眠命令休眠命令可以解决倒计时数字的停顿的问题。 在Linux实现的原理则 利用缓冲区实现一个简单的倒计时使用\r返回光标位置并清除缓冲区数据但是使用fflush将缓冲区的数据提取到了显示器文件中。单单只有\r是不行的因为\r虽然把光标的位置进行了返回输入一个数字光标会移动到下一个位置但是\r会在移动下一个位置后会返回回去但是会将数字从缓冲区中删除清空导致在显示器中显示不出来所以需要fflush进行提取 进度条的创建 一个进度条最基本的要求是要有进度读条要有显示进度读条占总数据占比的百分比数字要有旋转的表示进度正在进行中的光标图案。
在Linux中可以使用 # 等符号表示进度读条而根据之前倒计时的操作我们直到需要定义一块区域作为缓冲区随后不断地更新和刷新缓冲区内部的数据将其数据显示到显示屏上依次达到进度条不断地在更新进度不断地在增长的效果。 同时为了表示进度条不断地在增长因此需要使用循环函数在缓冲区中不断地添加#来显示进度条的增长。 而对于百分比数据可以利用定义好的缓冲区大小来通过计算得到在上图中定义的百分比大小是101其中的1表示的是最初始的数据也就是 \0 来表达进度是0 所以只要按照#的个数来计算百分比的占比是多少。 同时为了保证进度条是一个不会因为进度的增长而不断变长而是有一个固定长度的所以使用%-100实现距离的扩充以及往右边增长进度的效果。
而百分比的数据则需要打印除#号的个数以及加上%即可完成注意%符号在文件中需要两个%才能在显示屏上显示出来。 最后光标的添加可以将光标的图案进行展开然后利用\r的特性和#号个数的和光标的展开后的字符数进行计算计算出每一个#的光标的图案同时需要注意的是\符号需要两个\才能打印出来 不同场景下、打印任意长度的进度条
因为进度条是不会单独出现的进度条要配合具体的场景使用所以在此处我们建立一个文件下载进度的进度条。
main .c 拥有下载场景的进度条进行下载文件
下载文件的大小filesize 100兆b 100 * 1024 * 1024 * 1.0
下载场景 download
当前累计下载的数据量 current 0.0 初始
只要下载量小于文件大小就要一直下载 while current filesize
网速下载带宽 /下载速度 bandwidth 1024 * 1024 *1.0 本来不是1.0的因为网速的下载速度是随机的但这里为了方便就不弄了 1024 *1024 表示一兆 下载的本质是当前的下载量加上下载速度给予的下载量所以就构成了current bandwidth 同时我们的下载可能是在网络上进行的会有些网络的卡顿于是要加上sleep表示网络波动的效果
procbor.c 下载文件场景下的进度条本质上是给予任意数字打印任意长度进度条所以这里传输的参数total表示的是文件的下载大小而current表达的是文件的当前下载量。 代码和之前的进度条代码并未有太大的变化唯一的变化是#的多少和数据的占比取决于当前下载量和文件大小之间的关系运算。 下载量*100 / 文件大小 得出 占比 例如 下载量是 2 文件大小是100 2/100 0.2 2*100/100 2 表示两个 # 两个#同时表示2% 测试效果