Я хотел бы создать небольшую функцию, которая должна отображать текущий статус в процентах в консоли. Функция должна показывать только текущее значение в строке. Поэтому мне нужно удалить последний вывод. Это возможно? В лучшем случае это будет что-то ANSI C, программа должна работать на linux и windows.
Я нашел несколько escape-последовательностей, например "\ 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 пробела.
Привет.