Linux第九节课 - git / gdb

注意点:

  • 缓冲区中的内容被保存起来刷新不出来在Windows看不出来,只有在Linux系统下可以看出来!
  • extren关键字声明函数的时候可带可不带,因为在头文件进行一定是进行函数的声明,但是变量的声明一定要带上extern!

进度条的思路:

从左到右,第一次显示1个字符,第二次显示2个字符,第三次显示3个字符.......

每次显示多一个字符,且将前面的字符给覆盖掉!

注意点:

  • 使用usleep函数(头文件依然为#include<unistd.h>)

休眠时间为微秒!   1s = 1000毫秒 = 1000*1000微秒!

  • 右括号不动,左边最终#移动至右括号:空字符不占位置,有效输出的#一共有100个 --- >>> [%-100s]
  • 此时我们还想输入百分比%:在[%-100s]右边加上[%d] --- cnt即可 --- 但是此时只显示数字,没有对应的百分比!
  • 用两个%来显示百分号![%d%%];或者\%(转义字符)也可以打印%,但是不推荐

如何实现一个加载符号(旋转光标)?

方法(原理):第一次输出一个 | ,第二次覆盖式的写入一个 / ,第三次覆盖式的写入 — ,第四次再覆盖式的写入 \ ,然后再写入 — !

注意点:\(反斜杠是一个特殊的字符),因此通过\\解除注释表示一个\\!

如果我们想写成最后一个符号是>的形式,可以参考下列代码:

   15   while(cnt <= 100)                           
   16   {                                           
   17     printf("[%-100s][%d%%][%c]\r",bar,cnt,lable[cnt % len]);  // 没有\n,就没有立即刷新,因为显示器模式是行刷新
   18     fflush(stdout);                           
   19     bar[cnt++] = Str_style;                   
   20     bar[cnt] = '>';     // 在这次循环中,前cnt行打印的是Str_style,然后cnt+1,在cnt+1行打印'>'                                
E> 21     usleep(100000);                        
   22   } 

但是该代码有个问题:我们一共定义102个字符(循环从0~100执行了101次,显示101个数字,\0为第102个)

当cnt = 100时,此时循环内在cnt = 101的位置上将其改为'>',但是101上面应该放\0,因为我们应该加上条件判断!

如果我们不希望程序结束后,#留在最后:将cnt = 100的情况删去!

此时进度条进度已经差不多了,我们可以将程序优化一下:将数字改成宏,函数自定义传入参数等

最后显示进度条代码对应的源文件和头文件:

头文件:processBar.h

#pragma once

#include<stdio.h>
#define Str_style '='  // 将字符定义为#
#define NUM 102 // 循环共101次,再加上\n一共102
#define BODY '='
#define RIGHT '>'
#define TOP 100    // 循环次数

extern void processbar(int rate);

源文件:processBar.c

#include<stdio.h>
#include"processBar.h"
#include<string.h>

const char *lable = "|/-\\";
// v2版本:进度条如何被调用的?
char bar[NUM];
void processbar(int rate)
{
  if(rate < 0 || rate
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

一道秘制的小菜

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值