Re: Output ueberschreiben in C

David Haller <[email protected]>
Newsgroups gmane.linux.suse.programming
Message-ID <[email protected]>
Hallo,

Am Thu, 07 Oct 2004, Henning Weier schrieb:
>Kann man in C (unter Linux) etwas, was man an stdout geschrieben hat,
>ueberschreiben?

Ja. man console_codes, man isatty.

Quick & Dirty und nicht portabel geht das sogar in der shell:

$ for i in `seq 1 100`; do 
    printf "bar: %03i%%" $i;
    sleep 0.05;
  done;
  printf "\n"

Die ^[ sind Escapezeichen, in C einzugeben z.B. mit '\x1B':

    int i;
    for( i = 0; i < = 100; ++i) {
        printf("\x1B[2K\x1B[1Gbar: %03i%%", i);
        usleep(50000);
    }
    printf("\n");

In 'man console_codes' finden sich die diversen Escape-Sequenzen, und
teilweise auch, auf welchen Terminals diese jeweils funktionieren.

Und wie angedeutet: man sollte unbedingt pruefen, ob man denn auch
wirklich auf ein Terminal schreibt und nicht etwa eine Pipe oder Datei
zumuellt!

Um portabel zu sein muss man aber termcap / terminfo oder aehnliches
verwenden, also z.B. (n)curses verwenden.

HTH,
-dnh

-- 
Die drei Todfeinde des Programmieres:
Sonnenlicht, frische Luft und das unerträgliche Gebrüll der Vögel.

-- 
Um die Liste abzubestellen, schicken Sie eine Mail an:
    [email protected]
Um eine Liste aller verfügbaren Kommandos zu bekommen, schicken
Sie eine Mail an: [email protected]
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.