Alternative zu clrscr ()

Schnelle objektorientierte, kompilierende Programmiersprache.
nufan
Wiki-Moderator
Beiträge: 2558
Registriert: Sa Jul 05, 2008 3:21 pm

Alternative zu clrscr ()

Beitrag von nufan » Mi Jul 09, 2008 10:13 pm

Da ich nun langsam auf Linux umsteige, versuche ich auch Plattformunabhängig zu programmieren, sprich conio.h wegzulassen. Naja getch () kann man leicht mit getchar () usw. umgehen, aber wie sieht es mit clrscr () aus? Es soll angeblich einen auch einen system () Befehl geben, von dem aber abgeraten wird.
Dann wäre da noch einen eigenen Header mit einer Funktion schreiben.
Das würde dann ungefähr so aussehen:

Code: Alles auswählen

for (i=0; i<100; i++)
  printf ("\n");
Nur dann ist der Cursor immer ganz unten. Gibt es da ne bessere Methode?

Benutzeravatar
Xin
nur zu Besuch hier
Beiträge: 8859
Registriert: Fr Jul 04, 2008 11:10 pm
Wohnort: /home/xin
Kontaktdaten:

Re: Alternative zu clrscr ()

Beitrag von Xin » Mi Jul 09, 2008 10:23 pm

dani93 hat geschrieben:Da ich nun langsam auf Linux umsteige, versuche ich auch Plattformunabhängig zu programmieren, sprich conio.h wegzulassen. Naja getch () kann man leicht mit getchar () usw. umgehen, aber wie sieht es mit clrscr () aus? Es soll angeblich einen auch einen system () Befehl geben, von dem aber abgeraten wird.
Dann wäre da noch einen eigenen Header mit einer Funktion schreiben.
Das würde dann ungefähr so aussehen:

Code: Alles auswählen

for (i=0; i<100; i++)
  printf ("\n");
Nur dann ist der Cursor immer ganz unten. Gibt es da ne bessere Methode?
siehe http://www.linux-user.de/ausgabe/2007/0 ... index.html

Dein Problem wird durch

Code: Alles auswählen

printf("\033[J");
erschlagen.



Der Shell befehl wäre "clear", also system( "clear" ), wovon ich aber abrate :->
Merke: Wer Ordnung hellt ist nicht zwangsläufig eine Leuchte.

Ich beantworte keine generellen Programmierfragen per PN oder Mail. Dafür ist das Forum da.

nufan
Wiki-Moderator
Beiträge: 2558
Registriert: Sa Jul 05, 2008 3:21 pm

Re: Alternative zu clrscr ()

Beitrag von nufan » Mi Jul 09, 2008 10:28 pm

Mal danke für die Antwort.
Der Shell befehl wäre "clear", also system( "clear" ), wovon ich aber abrate :->
Da bist du nicht der einzige, aber warum eigentlich?

Benutzeravatar
Xin
nur zu Besuch hier
Beiträge: 8859
Registriert: Fr Jul 04, 2008 11:10 pm
Wohnort: /home/xin
Kontaktdaten:

Re: Alternative zu clrscr ()

Beitrag von Xin » Mi Jul 09, 2008 10:34 pm

dani93 hat geschrieben:Mal danke für die Antwort.
Der Shell befehl wäre "clear", also system( "clear" ), wovon ich aber abrate :->
Da bist du nicht der einzige, aber warum eigentlich?
Zugriffe auf das Konsolen-System dauern zum einen lange, sind unprofessionell und definitiv nicht plattformunabhängig.
Unter Windows heißt der Befehl cls (clearScreen), unter Linux, Unix, MacOS, AmigaOS heißt er clear.
Ist er nicht installiert... dann glaubst Du auch nur den Bildschirm gelöscht zu haben.
Merke: Wer Ordnung hellt ist nicht zwangsläufig eine Leuchte.

Ich beantworte keine generellen Programmierfragen per PN oder Mail. Dafür ist das Forum da.

nufan
Wiki-Moderator
Beiträge: 2558
Registriert: Sa Jul 05, 2008 3:21 pm

Re: Alternative zu clrscr ()

Beitrag von nufan » Do Jul 10, 2008 11:01 am

BIn leider erst heute zum Ausprobieren gekommen.
Der Code sieht jetzt folgendermaßen aus:

Code: Alles auswählen

#include <stdio.h>

int main (void)
{

  printf ("Wird man (hoffentlich) nie sehen");

  printf("\033[J");

  printf ("\nHello World");

  return 0;

}
Und das kommt dabei heraus:

Bild

Irgendwas mach ich da anscheinend falsch.

Benutzeravatar
Kerli
Beiträge: 1456
Registriert: So Jul 06, 2008 10:17 am
Wohnort: Österreich
Kontaktdaten:

Re: Alternative zu clrscr ()

Beitrag von Kerli » Do Jul 10, 2008 11:18 am

dani93 hat geschrieben:Irgendwas mach ich da anscheinend falsch.
Ja, du benutzt Windows ;)
"Make it idiot-proof and someone will invent an even better idiot." (programmers wisdom)

OpenGL Tutorials und vieles mehr rund ums Programmieren: http://www.tomprogs.at

nufan
Wiki-Moderator
Beiträge: 2558
Registriert: Sa Jul 05, 2008 3:21 pm

Re: Alternative zu clrscr ()

Beitrag von nufan » Do Jul 10, 2008 11:37 am

Ja, du benutzt Windows
Es soll ja auf Linux UND Windows funktionieren.

Benutzeravatar
Kerli
Beiträge: 1456
Registriert: So Jul 06, 2008 10:17 am
Wohnort: Österreich
Kontaktdaten:

Re: Alternative zu clrscr ()

Beitrag von Kerli » Do Jul 10, 2008 12:17 pm

dani93 hat geschrieben:
Ja, du benutzt Windows
Es soll ja auf Linux UND Windows funktionieren.
printf("\033[J"); funktioniert aber nicht mit der normalen Windowskonsole...

Bis jetzt hab noch von keiner Systemübergreifenden Möglichkeit gehört. (Außer vl mit irgendwelchen Bibliotheken)
"Make it idiot-proof and someone will invent an even better idiot." (programmers wisdom)

OpenGL Tutorials und vieles mehr rund ums Programmieren: http://www.tomprogs.at

Benutzeravatar
Xin
nur zu Besuch hier
Beiträge: 8859
Registriert: Fr Jul 04, 2008 11:10 pm
Wohnort: /home/xin
Kontaktdaten:

Re: Alternative zu clrscr ()

Beitrag von Xin » Do Jul 10, 2008 12:25 pm

dani93 hat geschrieben:
Ja, du benutzt Windows
Es soll ja auf Linux UND Windows funktionieren.
Da hilft vermutlich erstmal nur eine eigene Bibliothek und dafür entsprechende PräProzessor-Anweisungen.

Code: Alles auswählen

#ifdef WINDOWS
#include <conio.h>
#endif

void myClear()
{
#ifdef LINUX || UNIX || MAC || AMIGA
  printf( "\033[J" );
#endif
#ifdef WINDOWS
  clrscr();
#endif
}
#endif
Merke: Wer Ordnung hellt ist nicht zwangsläufig eine Leuchte.

Ich beantworte keine generellen Programmierfragen per PN oder Mail. Dafür ist das Forum da.

Benutzeravatar
Kerli
Beiträge: 1456
Registriert: So Jul 06, 2008 10:17 am
Wohnort: Österreich
Kontaktdaten:

Re: Alternative zu clrscr ()

Beitrag von Kerli » Do Jul 10, 2008 1:16 pm

Xin hat geschrieben:#ifdef WINDOWS
bzw. am besten gleich die vom compiler definierten Makros wie zb _WIN32 verwenden.
"Make it idiot-proof and someone will invent an even better idiot." (programmers wisdom)

OpenGL Tutorials und vieles mehr rund ums Programmieren: http://www.tomprogs.at

Antworten