PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Pascal Befehl clrscr für c



26-12-2000, 17:45
hallo,

ich habe erst vor kurzem angefangen, C zu lernen, habe schon relativ viel Erfahrung mit Pascal, Perl und PHP. Ich würde nun gerne wissen, wie der Pascal Befehl clrscr zum löschen des Bildschirms in C aussieht.

Danke für Eure Hilfe...Ulf

26-12-2000, 17:52
*hmm* soweit ich weiss gibt es in der "stamm-bibliothek" von C keinen vergleichbaren befehl;
um die portierbarkeit zu gewährleisten glaube ich .. ( ;

jakob

26-12-2000, 21:35
In Ansi-C ist das nicht definiert. Unter DOS ging das noch rel. einfach per ANSI-Zeichen (wenn die ansi.sys geladen war...) aber unter Linux...
Wenn es wirklich wichtig ist nehme halt (n)courses, damit gehen so spielereien ;-)
{und wie macht das dann die Sache?}
Sion

29-12-2000, 00:13
Hi!

Ich möchte jetzt niemand mit meinen banalen Ideen verwirren - vor allem, da ich selbst viel in Pascal programmiere und von clrscr absolut überzeugt bin.
Aber nichtsdestotrotz: Schreib Dir doch selbst 'ne kleine Funktion, die einfach die Anzahl der Zeilen (oder mehr), die auf einen Bildschirm passen, per printf ausgibt.

z.B:

.
.
.
void myClrscr(){
&nbsp;&nbsp;for(char i = 0; i < 25; i++){
&nbsp;&nbsp;&nbsp;&nbsp;printf("\n");
&nbsp;&nbsp;}
}
.
.
.

...oder so ähnlich.... es sind doch 25 Zeilen, oder? http://www.linuxforen.de/ubb/wink.gif

Ciao,

djlauk

... ich hoffe, jetzt ist es eingerückt.

[Dieser Beitrag wurde von djlauk am 29. Dezember 2000 editiert.]

29-12-2000, 10:09
>void myClrscr(){
> for(char i = 0; i < 25; i++){
> printf("\n");
> }
>}
aber ist das nicht eine c-funktion??

jakob

29-12-2000, 11:06
Hallo!

Es wurde hier schon richtig angemerkt:
Das Loeschen des Bildschirms stellt eine systemabhaengige und damit nicht portable Aktion dar. Daher ist fuer eine solche Aktion eine entsprechende Bibliothek notwendig, die nicht Bestandteil des ANSI C Standards ist.
Geeignete Bibliotheken sind TERMCAP und CURSES (wie schon angesprochen). Dort findet man dann auch eine entsprechende Funktion. Anstelle von CURSES wuerde ich jedoch die NCURSES verwenden, eine etwas neuere und weitreichendere Implementierung, die auch Farben etc. unterstuetzt. Sie muesste einschliesslich umfangreicher Doku eigentlich Bestandteil fast jeder Linux Distribution sein.

Beste Gruesse,
Oliver

rup
29-12-2000, 14:30
Hi
Den Bildschirm kann man doch mit einem Aufruf von clear (unter Dos "cls")löschen

#include <stdlib.h>
main()
{
system("clear");
}

Gruß Rupert

29-12-2000, 15:46
Vielen Dank für eure Hilfe - ich werd diie Vorschläge mal austesten

Ulf

29-12-2000, 15:56
<BLOCKQUOTE><font size="1" face="Arial,Helvetica,Geneva">Zitat:</font><HR>Hi
Den Bildschirm kann man doch mit einem Aufruf von clear (unter Dos "cls")löschen
[/quote]

Hallo!

Das stimmt schon, allerdings 2 Punkte:
1. system() ist immer sehr "teuer"
2. die Shell, die Umgebung und das Terminal muessen das clear-Kommando unterstuetzen (was nicht immer der Fall ist.)

Beste Gruesse,
Oliver

30-12-2000, 20:35
@jrk:

Ich hab doch gesagt Funktion. Ich dachte, es ginge nicht darum, einen "Befehl" zu finden, sondern eine Lösung. Außerdem ist Clrscr glaube ich auch eine "Funktion" bzw. eine ohne Rückgabewert, also nach Pascal-Konventionen eine "Prozedur".

@o.bildesheim:

Was meinst du mit "teuer" ?

Gruß,

DJ

31-12-2000, 10:51
teuer: das patent für system (clear) liegt bei mir :-). jedes mal, wenn ich ein glas fallen lasse, machts klirr, und da sind doch wohl eindeutige verwechslungsgefahren !

01-01-2001, 00:11
spaß beiseite: mit "teuer" ist das öffnen einer shell und das starten eines betriebssystem-kommandos gemeint, das ist wesentlich laufzeitaufwendiger als der vorschlag einer internen lösung.

08-01-2001, 10:58
Hi,

wieso definierst Du denn nicht einfach ein Makro mit Escape-Sequenzen?

#define CLS printf(\033[2J)

Da ich zur Zeit mehr mit Pascal mache bin ich mir gerade aber nicht sicher ob man nicht die ganze Sache in Anführungszeichen setzen muß.

Gruß

Stefan

08-01-2001, 20:51
Wenn dann mit Anführungszeichen:

#define CLS printf("\033[2J")

dann aber mit
CLS;
aufrufen! (;)
Wäre eigentlich genial, wenn das Linux das so macht. Habe ja vorher geschrieben, daß das unter DOS so geht.

Sion


[Dieser Beitrag wurde von Sion am 08. Januar 2001 editiert.]

09-01-2001, 07:15
Moin,

also bei mir geht das unter Linux (SUSE 7.0) tadellos, allerdings klappt das bei mir übers Eingabefenster in NT nicht? Und da heißt es immer die arbeiten alle mit dem POSIX-Standart.

Stefan

09-01-2001, 07:19
Da fällt mir noch was ein! Welchen Compiler verwendest Du denn??? Ich benutze auf beiden Systemen den gcc und für Pascal gpc (damit lassen sich die gleichen Escapesequenzen verwenden wenn man dem Compiler mitteilt, das er diese auch kennen soll - genaues Kommando habe ich nicht im Kopf, könnte aber bei Bedarf zu Hause nachsehen!).

14-01-2001, 10:22
hi leute,
ich bin vielleicht von gestern,
aber warum verwendet ihr nicht ein
angepasstes "conio.h" fuer linux,
geht unter gcc prima, oder wollt ihr
die funktion nachbilden?
steven