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