konsolenapplikation C zeilenwechsel

OP #503419
Hallo zusammen

Ich habe ein kleines Spiel in c programmiert (konsolenapplikation).
Das Spielfeld wird jeweils in Form einer Tabelle ausgegeben.
Nach jeder Runde wird die Tabbelle aktualisiert und erneut ausgegeben.

damit jetzt aber nicht immer eine neue Tabelle unter der vorherigen 
ausgegeben wird, möchte ich die Alte überschreiben.

mit \b kann man die zeichen löschen (backspace), aber nur auf einer 
zeile. wie komme ich auf die obere zeile zurück?

im Hyperterminal funktioniert das mit  der ESC- Sequenz Putchar "ESC[A"
oder
  putchar (0x1b);
  putchar ('[');
  putchar ('A');

in der konsole werden nur die zeichen selbst '<-[A' ausgegeben.

hat jemand eine gute Idee?

Gruss Raphael
Gast
Nun. Die Steuerbefehle hängen davon ab, welches Terminal das ist (bzw. 
welches emuliert wird). VT100, VT102, Linux Console, ANSI blabla etc.

Eine Zusammenstellung für Linux Console ist z.B: 
(http://www.rt.com/man/console_codes.4.html).

Generell, wenn das portabel sein soll, ist es aber besser man 
programmiert die Codes nicht fix ein, sondern verwendet eine Lib die das 
macht (und diverse, passende Codesätze kennt=, z.B: ncurses oder slang.

   Wiesi
Persönliche Seite
Sofern Du die Windows-Konsole meinst, kannst Du auf dieser keine 
ANSI-Escape-Sequenzen verwenden. Die Windows-Konsole emuliert überhaupt 
kein Terminal, genausowenig, wie das DOS ohne ANSI.SYS tat.
Erst letzteres (ANSI.SYS) ist die Terminalemulation, kann aber nicht 
unter Windows verwendet werden (DOS-Devicetreiber ...).

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.
Ein großer Unterschied zu "putc('\x0c');"!

Ein einfacherer Weg besteht möglicherweise darin, nach einem nativen 
Win32-Port von (n)curses zu suchen, der sollte den Job übernehmen.

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 19 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.