Chciałbym utworzyć małą funkcję, która powinna pokazywać aktualny status w procentach w konsoli. Funkcja powinna pokazywać tylko bieżącą wartość w linii. Muszę więc usunąć ostatnie wyjście. Czy to jest możliwe? Najlepszym przypadkiem byłoby coś z ANSI C, program powinien działać na Linux i Windows.C usuń wyjście printf
Znalazłem kilka sekwencji ucieczki, takich jak "\033[J"
, ale dawka nie działa.
Edit
Dobrze Próbowałem go z:
void PrintProcessBar(int i, int n) {
float ratio = i/(float)n;
printf("%.3d\b\b", (int)(ratio * 100));
fflush(stdout);
}
Ale to po prostu wydrukować wiele zer ... Co poszło nie tak? Jeśli użyję trzech \b
, nic nie otrzymam.
Rozwiązanie
float ratio = (i/(float)n) * 100;
printf("\b\b\b\b");
fflush(stdout);
printf("%.3d%c", (int)ratio, 37);
fflush(stdout);
i = aktualna pozycja. n = maksymalna liczba przebiegów.
Używam 4 \b
, ponieważ przy pierwszym wywołaniu funkcji usunie 4 spacje.
Greetz.
Odpowiedzi powinny być oddzielone od pytań. Jeśli chcesz odpowiedzieć na własne pytanie, możesz to zrobić, klikając przycisk [Odpowiedz na pytanie] na dole tej strony. – brandaemon