我希望创建一个小函数,该函数应在控制台中以百分比显示当前状态。该函数只应在一行中显示当前值。
因此,我必须删除最后一个输出。是否可能?最好是使用一些 ANSI C 的东西,程序应在 Linux 和 Windows 上运行。
我已经找到了一些转义序列,例如
编辑
好吧,我尝试过:
但是它只会打印出许多零...发生了什么?如果我使用三个
我已经找到了一些转义序列,例如
"\033[J"
,但它并不起作用。编辑
好吧,我尝试过:
void PrintProcessBar(int i, int n) {
float ratio = i / (float)n;
printf("%.3d\b\b", (int)(ratio * 100));
fflush(stdout);
}
但是它只会打印出许多零...发生了什么?如果我使用三个
\b
,就什么也看不到。
解决方案
float ratio = (i / (float)n) * 100;
printf("\b\b\b\b");
fflush(stdout);
printf("%.3d%c", (int)ratio, 37);
fflush(stdout);
i = 当前位置。 n = 最大运行次数。
我使用 4 个 \b
,因为在第一次调用函数时它将删除 4 个空格。
问候。