Archiv verlassen und diese Seite im Standarddesign anzeigen : printf ohne \n
Hi, ich habe eine kleine Frage zu printf
normalerweise wird eine zeile ja erst ausgegeben, wenn man ein \n hinten dran hängt. nun will ich aber eine art fortschrittsanzeige machen. 0...1...2...3....4 .. [] ...10
wie bekomme ich es hin, dass er mir 0... ausgibt ohne den rest zu haben - ein \n geht da ja nicht - unter windows geht das einfach ohne \n am ende (erst nach dem ...10) - unter linux nicht.
gruß
martin
Auf ungepufferte Ausgabe umschalten. Oder einfach gleich einen ungepufferten Ausgabestream nutzen, wie z.B. stderr. Das hat den Vorteil, dass der Fortschrittsbalken auch nicht in die Datei geschrieben wird, wenn du die Ausgabe deines Tools in eine Datei mit ">" lenkst:
fprintf(stderr,".");
Besser ist ja wohl den filestream es zu sagen, wenn man will das ausgegeben werden soll:
fprintf(stdout,"...");
fflush(stdout); /* <- entleert den puffer, sprich gibt ihn aus */
Besser ist ja wohl den filestream es zu sagen, wenn man will das ausgegeben werden soll:Aus dem oben genannten Grunde halte ich das für suboptimal. Progressbars haben (meine Meinung nach) in stdout nichts zu suchen.
Aus dem oben genannten Grunde halte ich das für suboptimal. Progressbars haben (meine Meinung nach) in stdout nichts zu suchen.
Und hat das in stderr was zu suchen? Wohl noch weniger, finde ich. Wenn es "graphische" bzw., nicht maschinen auswertbare outputs gibt, dann gehören die auf stdout. stderr sollte wenn möglich einen gewissen schema entsprechen und event. parsebar sein. Find ich halt.
ncurses schreibt ja auch auf stdout, oder? Und macht wget die Progressbar nicht auch auf stdout? Eine Progressbar ist keine Fehlermeldung. Warum sollte die auf den Standard-ERROR-Stream ausgegeben werden?
Und hat das in stderr was zu suchen? Wohl noch weniger, finde ich.Da hast du wohl recht. Es hat sich jedoch inzwischen als Quasi-Standard durchgesetzt, fast jedes CLI-Programm, dass Fortschritts- oder Informationsanzeigen machen, zeigt diese auf stderr an. Wget ist jetzt nur ein Beispiel.
Und in stderr ist immer noch besser als nach stdout. Wer beachtet denn heutzutage noch stderr, außer einem 2> /dev/null zu machen?
Powered by vBulletin® Version 4.2.5 Copyright ©2025 Adduco Digital e.K. und vBulletin Solutions, Inc. Alle Rechte vorbehalten.