PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : C: Bildschirm löschen



Stefan Feeser
22-07-2006, 09:35
Hallo zusammen,

ich habe mal wieder eine Anfängerfrage. Wie lösche ich am sinnvollsten den Bildschirm, so dass das Verhalten des Cursers dem des UNIX/Linux-Kommandos clear entspricht.

Ich habe mal in google gesucht und auch in meinen Büchern Escapesequenzen dazu gefunden. Unter Benutzung von printf wird aber eine Testausgabe ans Ende des Bildschirms geschrieben:



void main(void) {
printf("\033[2J");
printf("Hallo\n");
}


Daneben habe ich die Funktion clrscr(), die in der Headerdatei conio.h enthalten ist gefunden. Dummerweise darf ich keine Funktionen verwenden, die ich auf meinem Schulungssystem (mache einen Kurs in definierter Umgebung) nicht habe.

Gruss und Danke für Eure Hilfe

Stefan

pille710
23-07-2006, 16:00
Sofern das nicht Overkill ist bzw. erlaubt ist könntest du dir mal die Bibliothek ncurses anschauen, die bietet einige nette Funktionen zum Thema Terminal. Hier (http://www.tldp.org/HOWTO/NCURSES-Programming-HOWTO/index.html) ist eine sehr gute Referenz.
Ich bin zwar mit der Lib nicht besonders firm, aber soweit ich weiss stellt sie eine clear(); Funktion zur Verfügung die genau das machen sollte was du brauchst.


Ich habe das mal getestet:



#include <ncurses.h>

int main(void)
{
initscr();
clear();
endwin();
return 0;
}

Kompilieren mit gcc file.c -o file -lncurses



Hm, ich sehe gerade, ganz so einfach ist das leider doch nicht. Aber "man 3 clear" sollte weiterhelfen, da steht ein bisschen mehr dazu.

peschmae
23-07-2006, 17:40
Also obiges Programm löscht bei mir zumindest den Bildschirm. (Aber der Cursor wird noch nicht nach oben links gesetzt - das müsstest du dann separat machen mit einer anderen Escapesequenz).

Oder ist das Problem dass dein Terminal halt gar keine Escapesequenzen unterstützt? Das müsste natürlich dann schon den ANSI VT100 oder einen ähnlichen Standard unterstützen.

MfG Peschmä

Stefan Feeser
23-07-2006, 20:12
Hi,

die Escapesequenz funktioniert bei mir, allerdings bekomme ich eben den Cursur nicht in die linke obere Ecke. Weisst Du wie das geht?

Andere Libraries darf ich in meinem Kurs leider nicht installieren und ich habe auch nen ziemlichen Hals, da wir im Kurs (Fernkurs) zwar Escapesequenzen besprochen haben, aber nirgendwo ein Beispiel auftaucht wie man z. B. Positionierungen vornimmt (wir haben nur ganz einfache Escapesequenzen wie Wagenrücklauf behandelt).

Gruss und Danke

Stefan

peschmae
23-07-2006, 20:27
hier (http://www2.informatik.uni-halle.de/lehre/pascal/sprache/esc_vt100.html) hats eine Liste der üblichen escapesequenzen.

Das heisst z.B. ein:


echo -e "\033[2J\033[0;0fHallo"


auf der Bash oder ein entsprechendes printf in c.

MfG Peschmä

Stefan Feeser
23-07-2006, 22:38
Vielen Dank!!!