Test immer wieder an gleicher Stelle ausgeben ?
-
Hallo zusammen ...
Ich bastel schon seit langen an einen kleinen Programm. Dabei Wird immer wieder eine For-Schleife durchlaufen in der etwas verarbeitet wird. (Teil)Ergebnisse davon und weitere Infos gebe ich als Text auf dem Bildschirm aus (printf).
Da die Schleife relativ schnell durch läuft rattert mir der text fix über den Bildschirm.Ich hätte es also lieber, wenn alle Infos immer an der gleichen Position ausgegeben würden.
Also nicht wie im folgenden Mini-Beispiel, bei dem man 40 Zeilen auf dem Schirm erhält, sondern ich will die 2 Zeilen, in denen sich immer nur die Zahlenwerte verändern.
#include <stdio.h> int main() { for (int i=0; i<20; i++) { printf("Position: %d\n",i); printf("Irgend eine weitere Information: %d\n",i*5); } return 0; }Da gibts doch sicher eine einfache Möglichkeit, oder? Hab bis jetzt irgendwie nix zu gefunden...
Danke schonmal

-
Du könntest den ganzen Bildschirm immer wieder löschen und neu aufbauen (ist wahrscheinlich systemspezifisch). Oder du gehst wieder an eine bestimmte Stelle zurück ('\b'?) und schreibst deinen Kram da wieder hin.
-
Danke erstmal für die superschnelle Antwort!
Den Bildschirm löschen würde wohl zu einem unangenehmen Flackern führen...Oder du gehst wieder an eine bestimmte Stelle zurück ('\b'?) und schreibst deinen Kram da wieder hin.
Die Idee klingt gut! Die Frage wäre nur, wie ich eine bestimmte Stelle anfahre...
'\b'? sagt mir leider nicht viel. Google wollte mir dazu auch nix sinvolles verraten. Vielleicht kannst du das kurz erläutern?
-
Damit meine ich, dass du '\b' (Backspace-Taste, wenn ich mich grad nicht vertue) mit printf schreibst ("printf('\b');") und so ein Zeichen zurückwanderst. Machst du das so oft wie deine Strings lang sind, solltest du wieder bei deiner Startposition landen.
EDIT: Wenn du deine Strings in Variablen packst, dann kannst du z.B. auch direkt for-Schleifen mit strlen (bei char-Arrays) aufbauen. Dann brauchst du auch nix abzählen.

-
Mandel schrieb:
Die Idee klingt gut! Die Frage wäre nur, wie ich eine bestimmte Stelle anfahre...
Das ist systemspezifisch und nicht Bestandteil von Standard-C++. Eventuell kann dir im Konsole-Forum jemand weiterhelfen.
'\b'? sagt mir leider nicht viel. Google wollte mir dazu auch nix sinvolles verraten. Vielleicht kannst du das kurz erläutern?
Schau mal im Buch/Tutorial deiner Wahl nach "Escapesequenzen" und/oder "Sonderzeichen" bzw. "Steuerzeichen". \b ist das Zeichen für den Backspace.
-
Wenn du den Borland Builder verwendest, dann kannst du gotoxy() nutzen (conio.h wenn ich mich nicht irre). Ansonsten einfach im Konsolenforum nachfragen.
-
Hm ich denke das Flimmern, weil das Programm zu schnell ist, wirste nicht verhindern können. Schon daran gedacht Sleep() zu nutzen oder sonst irgendeine Art das Programm für z.B. 10 Millisekunden warten zu lassen?
So auf die Art :-> Schreiben
-> Warten
-> Bildschirm säubern
-> Schreiben
-> Warten
-> Bildschirm säubern
...
-
@FreakY<3Cpp: Der Thread ist nicht mehr aktuell. Hier gehts weiter:
http://www.c-plusplus.net/forum/viewtopic-var-p-is-1678554-and-highlight-is-.html