Konsole ohne fortlaufende Speicherung der Texte
-
Hallo Freunde der Sonne,
Ich möchte ein Programm mit textueller Ausgabe schreiben. Jedoch sollen frühere Ausgaben auf dem Bildschirm gelöscht werden, sobald eine neue Ausgabe gedruckt werden soll.
Wie bewerkstellige ich das?
-
Für triviale Programme kann man immer über system() den clear Befehl der Console aufrufen (windows):
system("CLS");Ist aber allgemein nicht zu empfehlen (v.a. Sicherheitsrisiko). Einfach wäre auch, einfach so oft '\n' auszugeben, bis der bisherige Text nach oben verschwunden ist. Nachteil dabei kann sein, dass der Cursor dann am unteren Rand ist, und der Text je nach Pufferhöhe der Konsole noch zu sehen ist (durch scrollen).
-
Für Windows:
#include <windows.h> ... void ClearScreen() { CONSOLE_SCREEN_BUFFER_INFO csbi; COORD target = {0, 0}; DWORD written; GetConsoleScreenBufferInfo(GetStdHandle(STD_OUTPUT_HANDLE), &csbi); FillConsoleOutputCharacter(GetStdHandle(STD_OUTPUT_HANDLE), ' ', csbi.dwSize.X * csbi.dwSize.Y, target, &written); FillConsoleOutputAttribute(GetStdHandle(STD_OUTPUT_HANDLE), 7, csbi.dwSize.X * csbi.dwSize.Y, target, &written); SetCursorPosition(0, 0); }
-
Vielen Dank für die Antworten!
Die einfache cls-Methode hat wunderbar funktionert! (Aus Angst: Was ist an dieser Methode gefährlich?)Vielen Dank auch für die untere Methode!
-
Dexter1997 schrieb:
Die einfache cls-Methode hat wunderbar funktionert! (Aus Angst: Was ist an dieser Methode gefährlich?)
-
Beschäftige Dich lieber mit den Konsolefunktionen, wenn Du Konsolefunktionen brauchst. Als Nächstes möchest Du vielleicht eine bestimmte Position in der Konsole für die nächste Ausgabe ansteuern, oder das Konsolenfenster auf eine bestimmte Höhe/Breite bringen, oder oder oder ...
Und da kommst Du dann ohne Konsolefunktionen sowieso nicht mehr aus.
https://msdn.microsoft.com/en-us/library/windows/desktop/ms682073(v=vs.85).aspx
-
Vielen Dank für den Ratschlag. Aber was ist das gefährliche an System("cls")? Ich bin ein neugieriger Bursche, wie du merkst

-
Wenn Du so neugierig bist ... hast Du nicht auf den Link in meiner Antwort von 13:49 Uhr geklickt?
-
Aaah, ich sehe es, diesen Beitrag habe ich völlig übersehen...
-
Ich würde auch vorschlagen die Anforderung zu hinterfragen. Und falls es wirklich unbedingt sein muss, würde ich empfehlen auszuprobieren wie der Code den man für's Löschen der Konsole verwendet hat sich mit Umgelenkten Streams (stdout, stderr) verträgt - also z.B. wenn man die Ausgabe in ein Textfile umleitet.