Linux之进度条

Linux之进度条_第1张图片

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

文章目录

  • 一、c语言printf输出string类型
  • 二、sleep()函数和usleep()函数
    • 1.Sleep函数
    • 2.usleep()函数
    • 3.关于秒的换算
  • 三、fflush()函数 (简单了解)
  • 四、%r和%h
  • 五、代码块
    • 1.process.h
    • 2.process.cpp

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

一、c语言printf输出string类型

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

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

正确示范
Linux之进度条_第3张图片

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

1.Sleep函数

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

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

2.usleep()函数

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

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

3.关于秒的换算

1秒=1000毫秒=1000000微秒

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

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

  • 头文件 #include
  • 函数结构:int fflush(FILE *stream)

四、%r和%h

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

五、代码块

1.process.h

代码如下(示例):

#include
#include
#include 

#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后缀,在编译的时候会出现的错误如下图所示
在这里插入图片描述

实现效果如下


你可能感兴趣的:(linux,c语言,c++)