Linux之进度条

在这里插入图片描述

进度条在我们日常生活中可以说非常常见了。我们常常会遇到这样的情况,进度条加载到百分之九十八就卡着不动,这很令人恼火。本篇文章,我将带领大家用c/c++语言编写出一个简单的进度条。

提示:以下是本篇文章正文内容,下面案例可供参考

一、c语言printf输出string类型

为了更好地控制格式,没有采用c++中的cout而是c语言中printf()函数。使用c++中的string类型也是为了更加简便地使用。

错误示范
在这里插入图片描述
因为printf函数输出字符串是针对char *的,即printf只能输出c语言的内置数据类型,而string不是c语言的内置数据类型。而string类型的对象不止包含字符串,还包含了许多用于操作的函数,所以&str并非字符串的首地址。
所以,如需输出string对象中的字符串,可以使用string的成员函数c_str(),该函数返回字符串的首字符的地址。

正确示范
在这里插入图片描述

二、sleep()函数和usleep()函数

1.Sleep函数

Sleep函数可以使计算机程序(进程,任务或线程)进入休眠,使其在一段时间内处于非活动状态。
注意

  • 在VC中Sleep中的第一个英文字符为大写的"S"
    在标准C中是sleep(S不要大写),下面使用大写的来说明,具体用什么看你用什么编译器。简单的说VC用Sleep,别的一律使用sleep
  • Sleep函数的一般形式:
    Sleep(unsigned long);
  • 其中,Sleep()里面的单位,是以毫秒为单位,所以如果想让函数滞留1秒的话,应该是Sleep(1000);
  • 另外还需要引用头文件#include <windows.h>

2.usleep()函数

usleep功能把进程挂起一段时间, 单位是微秒(百万分之一秒)
注意

  • 需要引头文件#include <unistd.h>
  • 个函数不能工作在windows 操作系统中。用在Linux的测试环境下面

3.关于秒的换算

1秒=1000毫秒=1000000微秒

三、fflush()函数 (简单了解)

fflush是一个在C语言标准输入输出库中的函数,功能是冲洗流中的信息,该函数通常用于处理磁盘文件。 fflush ()会强迫将缓冲区内的数据写回参数stream 指定的文件中。

  • 头文件 #include<stdio.h>
  • 函数结构:int fflush(FILE *stream)

四、%r和%h

  • ‘\r’:回车,即将光标移动到当前行的行首;
  • ‘\n’:换行,即将光标移动到下一行

五、代码块

1.process.h

代码如下(示例):

#include<stdio.h>
#include<string>
#include <windows.h>

#define N 0

const char style[] = { '#', '$', '>', '-', '*' };
const char lable[4] = { '|','\\','-','\/' };

using namespace std;

2.process.cpp

代码如下(示例):

int main()
{
	string str;
	char ch = style[N];
	for (int i = 1; i <= 100; i++)
	{
		fflush(stdout);
		str += ch;
		printf("[%-100s][%d%%][%c]\r", str.c_str(),i, lable[i%4]);
		Sleep(100);//1/10s
	}
	return 0;
}

这里要格外注意,在代码中使用string类型是c++的内容,源文件的后缀是.cpp而不是.c
如果是.c后缀,在编译的时候会出现的错误如下图所示
在这里插入图片描述

实现效果如下
在这里插入图片描述


  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值