", x); fflush(stdout); Sle_c++进度条">
当前位置:   article > 正文

C++控制台简单的进度条实现方法及原理_c++进度条

c++进度条

1、背景介绍

基于windows环境的桌面程序经常会涉及到上传下载的进度条显示,本文就介绍一种基于C++简单的进度条制作的方法。

2、代码

	int i;
	char x[300];
	memset(x, 0, 300);
	for (i = 0; i < 101; i++) {
		sprintf(&x[0], "%3d", i);
		x[3] = '%';
		x[4 + i] = '=';
		printf("\r%s>", x);
		fflush(stdout);
		Sleep(10);
	}
	printf("\n");
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12

3、 详解

  • menset()函数

menset(void *s, int ch, size_t n)
功能:为新申请的内存做初始化,复制字符ch到参数s的n个字节中,s表示内存块;

  • fflush()函数
  • 头文件:#include<stdio.h>
  • 定义函数:int fflush(FILE * stream);
  • 函数说明:fflush()会强迫将缓冲区内的数据写回参数stream指定的文件中,如果参数stream为NULL,fflush()会将所有打开的文件数据更新。
  • 返回值:成功返回0,失败返回EOF,错误代码存于errno中。
  • 说明:fflush()也可用于标准输入(stdin)和标准输出(stdout),用来清空标准输入输出缓冲区。stdin是standard input的缩写,即标准输入,一般是指键盘;标准输入缓冲区即是用来暂存从键盘输入的内容的缓冲区。stdout是standard output的缩写,即标准输出,一般是指显示器;标准输出缓冲区即是用来暂存将要显示的内容的缓冲区。清空标准输出缓冲区,刷新输出缓冲区,即将缓冲区的东西输出到屏幕上,如果圆括号里是已写打开的文件的指针,则将输出缓冲区的内容写入该指针指向的文件,否则清除输出缓冲区。这里的stdout是系统定义的标准输出文件指针,默认情况下指屏幕,那就是把缓冲区的内容写到屏幕上。可是从代码中看不出缓冲区会有什么内容,所以它实际上没起什么作用。
  • sprintf()函数

头文件:#include<stdio.h>
函数声明: int sprintf(char *string, char *format [,argument,…]);
参数列表:

  • string-- 这是指向一个字符数组的指针,该数组存储了 C 字符串。
  • format-- 这是字符串,包含了要被写入到字符串 str 的文本。它可以包含嵌入的 format 标签,format标签可被随后的附加参数中指定的值替换,并按需求进行格式化。format标签属性是%[flags][width][.precision][length]specifier
  • [argument]…:根据不同的 format 字符串,函数可能需要一系列的附加参数,每个参数包含了一个要被插入的值,替换了 format 参数中指定的每个 % 标签。参数的个数应与 % 标签的个数相同。
  • 功能:把格式化的数据写入某个字符串缓冲区。
  • 返回值:如果成功,则返回写入的字符总数,不包括字符串追加在字符串末尾的空字符。如果失败,则返回一个负数。 sprintf返回以format为格式argument为内容组成的结果被写入string的字节数,结束字符‘\0’不计入内。即,如果“Hello”被写入空间足够大的string后,函数sprintf返回5。

4、实验

上述代码输出函数printf("\r%s>", x);中的“\r”的作用分析:
-printf("%s>", x);的输出效果:

在这里插入图片描述
-printf("\r\n%s>", x);printf("\n%s>", x);的输出效果:
在这里插入图片描述
-printf("\r%s>", x);的输出效果:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

  • 反思:“\r” :回车,表示将光标移到行首; “\n”:换行,表示将光标移到下一行;“\r\n”:回车+换行;欲实现进度条效果,只需要每次输出之后将光标移到行首,下一次的输出就会覆盖掉上一次的输出,就不会出现多行重复输出的效果。
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小小林熬夜学编程/article/detail/264263
推荐阅读
相关标签
  

闽ICP备14008679号