Programmablauf pausieren und Bildschirm löschen?
-
Hallo,
ich wollte ein Programm schreiben, was mir ein bestimmtes Wort oder eine Zahl für nur 0,5 - 1 sekunde zeigt und dann wieder ausblendet.
Mein Problem ist, dass ich weder die Funktion kenne, mit der ich den Programm ablauf verzögern kann, noch diejenige, mit der ich unter Linux den Bildschirm löschen kann (wie es der Befehl "cls" unter DOS tut).Kann mir jemand helfen? Ich bedanke mich schon im Voraus.
mfg Flipstar
-
Mit ANSI C wäre das nicht möglich, vielleicht mit ANSI Escape Sequenzen, die unter DOS (heute) nicht mehr unterstützt werden (soefern man ansi.sys nicht geladen hat).
Wenn du für DOS machen willst, dann frag lieber im WinAPI Forum, vielleicht bietet die WinAPI tolle Funktionen dafür an.
-
@supertux
er sucht doch für linux
-
@flipstar
schau mal in die ncurses.. da findest du delay und clear.. oder so..
-
elise schrieb:
@supertux
er sucht doch für linuxach ja, stimmt, ich hab das überlesen " mit der ich unter Linux den Bildschirm löschen kann" und dafür "unter DOS tut" gelesen und angenommen.
Prima, dann benutze man: sleep(3) und für ncurses
http://www.faqs.org/docs/Linux-HOWTO/NCURSES-Programming-HOWTO.html
(http://www.gnu.org/software/ncurses/ncurses.html ofizielle Homepage)
-
Danke erstmal für die Hilfe
@supertux: darf ich fragen wieso du "sleep(3)" (also mit dem Parameter 3) angegeben hast? Ich frag nur, da es vielleicht eine Bedeutung haben könnte.
-
Mach
$ man sleep $ man 3 sleep
Das sleep von Manual 1 ist das Page vom Programm sleep.
Das sleep von Manual 3 ist das Page des Programmiermanuals, also die Spezifikation von der Funktion sleep.
-
printf("\x1B[2J\x1B[H"); /* screen löschen, Cursor nach links oben */ fflush(stdout); /* Damits auch sicher sofort passiert. */
\x1B ist ESC, ESC[2J leert den screen, ESC[H setzt den Cursor in die linke obere Ecke. ESC[H hört auch auf die Syntax ESC[x;yH bzw. ESC[xH und setzt den Cursor an die entsprechende Stelle x,y bzw. x,1.
Ne Erklärung gibts z.B. hier: http://www.dee.ufcg.edu.br/~rrbrandt/tools/ansi.html
-
0xdeadbeef schrieb:
printf("\x1B[2J\x1B[H"); /* screen löschen, Cursor nach links oben */ fflush(stdout); /* Damits auch sicher sofort passiert. */
\x1B ist ESC, ESC[2J leert den screen, ESC[H setzt den Cursor in die linke obere Ecke. ESC[H hört auch auf die Syntax ESC[x;yH bzw. ESC[xH und setzt den Cursor an die entsprechende Stelle x,y bzw. x,1.
Ne Erklärung gibts z.B. hier: http://www.dee.ufcg.edu.br/~rrbrandt/tools/ansi.html
ich erhalte dabei aber folgende BILDSCHIRMAUSGABE:
"←[2J←[H"
was habe ich falsch gemacht?
-
hallo
soviel ich weiß, macht das nicht jedes linux mit
versuch mal
printf("\33[2J");wenn es den bildschirm löscht, gut, wenn du was siehst (wir reden von -unter linux-) gehts eben nicht. dann musst du auf die ncurses zurückgreifen.
unter windows gehen ansisequenzen nur noch bis win98 mit dem einbinden der ansi.sys in der config.sys (siehe konsolenfaq).
so long
-
Linux beherrscht die ANSI-Escape-Sequenzen. Sonst würde ncurses auch gar nicht funktionieren, das ist nämlich lediglich ein Wrapper für eben diese Sequences.