Seite 1 von 2

Alternative zu clrscr ()

Verfasst: Mi Jul 09, 2008 10:13 pm
von nufan
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?

Re: Alternative zu clrscr ()

Verfasst: Mi Jul 09, 2008 10:23 pm
von Xin
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 :->

Re: Alternative zu clrscr ()

Verfasst: Mi Jul 09, 2008 10:28 pm
von nufan
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?

Re: Alternative zu clrscr ()

Verfasst: Mi Jul 09, 2008 10:34 pm
von Xin
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.

Re: Alternative zu clrscr ()

Verfasst: Do Jul 10, 2008 11:01 am
von nufan
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.

Re: Alternative zu clrscr ()

Verfasst: Do Jul 10, 2008 11:18 am
von Kerli
dani93 hat geschrieben:Irgendwas mach ich da anscheinend falsch.
Ja, du benutzt Windows ;)

Re: Alternative zu clrscr ()

Verfasst: Do Jul 10, 2008 11:37 am
von nufan
Ja, du benutzt Windows
Es soll ja auf Linux UND Windows funktionieren.

Re: Alternative zu clrscr ()

Verfasst: Do Jul 10, 2008 12:17 pm
von Kerli
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)

Re: Alternative zu clrscr ()

Verfasst: Do Jul 10, 2008 12:25 pm
von Xin
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

Re: Alternative zu clrscr ()

Verfasst: Do Jul 10, 2008 1:16 pm
von Kerli
Xin hat geschrieben:#ifdef WINDOWS
bzw. am besten gleich die vom compiler definierten Makros wie zb _WIN32 verwenden.