C/C++ cout durch printf ersetzen
Hallo Listenbewohner, ich habe in C++ eine Lektion hinter mich gebracht die über ESC-Sequenzen z.B. die Position des Cursors auf dem Bildschirm steuert: // Makro LOCATE // Aufruf: LOCATE(zeile, spalte); // Setzt den Cursor auf die angegebene Position (zeile,spalte). // (1,1) ist linke obere Ecke. #define LOCATE(z,s) (cout <<"\033["<< (z) <<';'<< (s) <<'H') Hat ein begnadeter C-Programmierer eine Vorstellung davon, wie ich das mit printf umsetzen kann (oder anders) ? ...und vielleicht ein Beispiel aus dem Ärmel zaubert, wie der obige Aufruf in C aussehen könnte ? Bemerkung: Ich bin auf der Suche nach einer Lösung auf curses.h/ncurses.h gestossen - ich möchte es aber trotzdem wissen ;-) Danke Oli
Hallo, On Mon, 30 Sep 2002, Oli Weiss wrote:
Hallo Listenbewohner,
ich habe in C++ eine Lektion hinter mich gebracht die über ESC-Sequenzen z.B. die Position des Cursors auf dem Bildschirm steuert: // Makro LOCATE // Aufruf: LOCATE(zeile, spalte); // Setzt den Cursor auf die angegebene Position (zeile,spalte). // (1,1) ist linke obere Ecke.
#define LOCATE(z,s) (cout <<"\033["<< (z) <<';'<< (s) <<'H')
#ifdef __cplusplus
#include <cstdio>
#else
#include
Oli Weiss schrieb:
Hallo Listenbewohner,
ich habe in C++ eine Lektion hinter mich gebracht die über ESC-Sequenzen z.B. die Position des Cursors auf dem Bildschirm steuert: // Makro LOCATE // Aufruf: LOCATE(zeile, spalte); // Setzt den Cursor auf die angegebene Position (zeile,spalte). // (1,1) ist linke obere Ecke.
#define LOCATE(z,s) (cout <<"\033["<< (z) <<';'<< (s) <<'H')
Hat ein begnadeter C-Programmierer eine Vorstellung davon, wie ich das mit printf umsetzen kann (oder anders) ? ...und vielleicht ein Beispiel aus dem Ärmel zaubert, wie der obige Aufruf in C aussehen könnte ?
Bemerkung: Ich bin auf der Suche nach einer Lösung auf curses.h/ncurses.h gestossen - ich möchte es aber trotzdem wissen ;-)
Ein bißchen OT, aber
here you go:
==============================================================================
#include
On Mon, 30 Sep 2002 at 22:23 (+0200), Martin Knipper wrote:
Oli Weiss schrieb:
ich habe in C++ eine Lektion hinter mich gebracht die über ESC-Sequenzen z.B. die Position des Cursors auf dem Bildschirm steuert: // Makro LOCATE // Aufruf: LOCATE(zeile, spalte); // Setzt den Cursor auf die angegebene Position (zeile,spalte). // (1,1) ist linke obere Ecke.
#define LOCATE(z,s) (cout <<"\033["<< (z) <<';'<< (s) <<'H')
Hat ein begnadeter C-Programmierer eine Vorstellung davon, wie ich das mit printf umsetzen kann (oder anders) ? ...und vielleicht ein Beispiel aus dem Ärmel zaubert, wie der obige Aufruf in C aussehen könnte ?
Bemerkung: Ich bin auf der Suche nach einer Lösung auf curses.h/ncurses.h gestossen - ich möchte es aber trotzdem wissen ;-)
============================================================================== #include
int main() { printf("\e[2J"); // clear screen printf("\e[1;1H"); // Positioniert den Cursor auf die // x-y-Koordinaten (1,1) -----> Da fehlt eine return-Anweisung. } ===============================================================================
Seit ihr euch sicher, dass das portabel ist? So ganz ohne termcap/terminfo-Geschichten? Kann ich mir nicht recht vorstellen ... Gruß, Bernhard -- _________ http://www.bwalle.de _________________________________________________ Es ist ein großer Vorteil im Leben, die Fehler, aus denen man lernen kann, möglichst früh zu begehen. -- Sir Winston Churchil
Hi, Bernhard Walle schrieb:
On Mon, 30 Sep 2002 at 22:23 (+0200), Martin Knipper wrote:
Oli Weiss schrieb:
ich habe in C++ eine Lektion hinter mich gebracht die über ESC-Sequenzen z.B. die Position des Cursors auf dem Bildschirm steuert: // Makro LOCATE // Aufruf: LOCATE(zeile, spalte); // Setzt den Cursor auf die angegebene Position (zeile,spalte). // (1,1) ist linke obere Ecke.
#define LOCATE(z,s) (cout <<"\033["<< (z) <<';'<< (s) <<'H')
Hat ein begnadeter C-Programmierer eine Vorstellung davon, wie ich das mit printf umsetzen kann (oder anders) ? ...und vielleicht ein Beispiel aus dem Ärmel zaubert, wie der obige Aufruf in C aussehen könnte ?
Bemerkung: Ich bin auf der Suche nach einer Lösung auf curses.h/ncurses.h gestossen - ich möchte es aber trotzdem wissen ;-)
============================================================================== #include
int main() { printf("\e[2J"); // clear screen printf("\e[1;1H"); // Positioniert den Cursor auf die // x-y-Koordinaten (1,1)
-----> Da fehlt eine return-Anweisung.
Richtig.
} ===============================================================================
Seit ihr euch sicher, dass das portabel ist? So ganz ohne termcap/terminfo-Geschichten? Kann ich mir nicht recht vorstellen ...
Nee ;-) Aber in der bash funktioniert's Gruß Martin
Hi, On Mon, 30 Sep 2002, Martin Knipper wrote:
Seit ihr euch sicher, dass das portabel ist? So ganz ohne termcap/terminfo-Geschichten? Kann ich mir nicht recht vorstellen ...
Nee ;-)
Aber in der bash funktioniert's
Hat nicht's mit der Shell, sondern mit dem Terminal zu tun. Obiges (Cursor-Positionierung) sind ANSI-Sequenzen, so dass sie in der Tat recht portabel sind. Anderes koennte aber z.B. auf der linux (text) console und im XTerm ander aussehen, bzw. gar nicht funktionieren. Ciao, Micha.
On Mon, 30 Sep 2002 at 22:04 (+0200), Oli Weiss wrote:
ich habe in C++ eine Lektion hinter mich gebracht die über ESC-Sequenzen z.B. die Position des Cursors auf dem Bildschirm steuert: [...] #define LOCATE(z,s) (cout <<"\033["<< (z) <<';'<< (s) <<'H')
Hat ein begnadeter C-Programmierer eine Vorstellung davon, wie ich das mit printf umsetzen kann (oder anders) ? ...und vielleicht ein Beispiel aus dem Ärmel zaubert, wie der obige Aufruf in C aussehen könnte ?
<schnipp> int z = 4, s = 20; printf ("\033[%d;%dHHier steh ich nun, ich armer Tor\n", z, s); <schnapp> Als Makro: #define LOCATE(z,s) printf ("\033[%d;%dH", (z), (s)) Jan
participants (6)
-
Bernhard Walle
-
David Haller
-
Jan.Trippler@t-online.de
-
Martin Knipper
-
Michael Matz
-
Oli Weiss