mikrocontroller.net

Forum: PC-Programmierung printf() auf bestimmte Position


Autor: Johannes T. (johnsn)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo!

Ich programmiere gerade eine simple Prozessüberwachungssimulierung.
Dabei habe ich ein Win32-Konsolenprojekt in C++ geschrieben.

Nun habe ich 3 Messwerte, die ich auf die Konsole ausgeben will. Dabei 
soll die erste Zeile für Messwert 1, die 2. für MW 2, usw sein. Wenn ich 
jetzt einfache cout oder printf mache, dann werden die Messwerte (die in 
unterschiedlichen Zeitabständen aktualisiert werden sollen) 
hintereinander geschrieben. Ich möchte es so machen, dass sich nur die 
2. Zeile ändert, wenn Messwert 2 aktualisiert wurde.

Gibt es eine Möglichkeit zu sagen, an welcher Cursor-Stelle das printf 
() ausgeführt werden soll, oder
Welche Möglichkeiten habe ich?

Gruß,
Johnsn

Autor: Rufus Τ. Firefly (rufus) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Du wirst nicht umhinkommen, Dich mit den Win32-API-Funktionen zu
beschäftigen, die unter "Console I/O" zusammengefasst werden.

http://msdn2.microsoft.com/en-us/library/ms682010.aspx

ist der Einstieg in deren Dokumentation. Für Dich interessant ist der
Bereich "low-level console I/O".
Besonders einfach oder übersichtlich sind die Funktionen dort jedoch
nicht.

http://msdn2.microsoft.com/en-us/library/ms682022.aspx

zeigt, wie der Inhalt der Konsole gelöscht werden kann.


Allerdings wird hier Beitrag "Re: Formatierte Textausgabe in C" 
eine Library beschrieben, die einem die Ekligkeiten der 
Konsolenprogrammierung abnimmt.

Autor: Johannes T. (johnsn)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Habs mir jetzt aus dieser Wrapper-Lib rausgezupft, danke!
  COORD  coordPos;

  coordPos.X = Xval;
  coordPos.Y = Yval;

  SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), coordPos);

Autor: Ingo Elsen (ogni42)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das geht auch - sofern man den Terminal Modus (z.B. ASCII, VT100) kennt 
- mit Escape Sequenzen. Einfach mal nach googlen. Vorteil: Portabilität.

Autor: Rufus Τ. Firefly (rufus) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das geht aber nicht in der Windows-Konsole. Die kennt keine 
Escape-Sequenzen.
Für DOS gab es ANSI.SYS, aber der Ansatz ist tot.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.