Wenn man in der Ausgabe eines Programmes eine hochzählende Statusanzeige, z. B. mit einem Prozentwert, haben will, dann muss bei jeder neuen Anzeige der vorherige Wert auf dem Bildschirm überschrieben werden.
Durch die Ausgabe des Backspace-Zeichens \b funktioniert dies auch ganz gut.
Einfachstes Beispiel in C:
Code:
#include <stdio.h>
#include <stdlib.h>
int main()
{
unsigned char i;
printf("Status: 0%%"); /* Anfangswert ausgeben */
fflush(stdout);
for(i=10;i<=100;i+=10)
{
sleep(1);
printf("\b\b\b\b"); /* Cursor vier Zeichen zurückbewegen */
printf("%3u%%",i); /* neuen Wert ausgeben */
fflush(stdout);
}
printf("\n");
return(EXIT_SUCCESS);
}
Meine Fragen dazu:
Gibt es auch Fälle in denen das in der Console falsch angezeigt wird, oder kann man sich sicher sein, dass das mit der Ausgabe des \b immer gut funktioniert?
Wie sieht es mit der Umleitung der Ausgabe in eine Datei aus - kann man da verhindern, dass alle Prozentwerte inklusive der ganzen \b gespeichert werden?
Gibt es einen anderen Weg für so eine Anzeige, ohne gleich (n)curses verwenden zu müssen?
Lesezeichen