Anfängerfrage zu clrscr()
-
Hallo Leute, wie kann ich in C den Bildschirm löschen. Mit clrscr() funzt es ned.
Danke
-
Wieso sollte es nicht mit clrscr() funktionieren ? Auch wenn es zwar kein ANSI-Standard ist ... vielleicht vergessen die conio.h einzubinden ?
Wenn nicht, schreib dir doch eine Funktion die mehrmals
printf( "\n" );
ausgibt, oder was weiß ich
Oder du gehst über die Escape-Sequenzen:
printf( "\033[2J" );
Das sollte bei den meisten Compilern auch funktionieren (allerdings auch kein ANSI)
-
In Windows gehts mit system("cls");
-
ist alles höllisch compilerabhängig und ansi.sys einbindmäßig.. schau ins konsolenfaq, da stehen mehrere möglichkeiten
-
weil so viele immer fragen wie das mit clrscr und gotoxy ist und dann immer die antworten erhalten mit standard C(/C++) gehe das nicht. insofern man davon ausgehen kann das die konsole 80x25 gross ist kann man doch einfach ein entsprechendes char array erstellen und dann mit lowlevel operationen wirte etc. immer das ganze array auf einmal darstellen... und in das array kann man ja schliesselich schreiben was und wo man will und löschen kann man es auch...
wäre eigentlich sinnvoll so eine art wrapper für das zu schreiben...[ Dieser Beitrag wurde am 25.02.2003 um 15:13 Uhr von japro editiert. ]
-
tja schreib ihn *gg*
-
Wozu: Die Konsole kann jede mögliche Größe haben, und write/... stehen auch nirgends im Standard. Findet euch einfach damit ab, dass es in ANSI-C nicht geht, und nehmt irgendeine conio.h oder was auch immer ...
-
mit write hab ich fwrite gemeint und unter windows z.b ist die konsole eigentlich immer 80*25... (ich hab nicht behauptet es sei portabel nur mit standard lässti sich sowas auch realisieren):
#include <stdlib.h> #include <stdio.h> #include <string.h> #include <stdarg.h> #define ConsoleSize 25*80-1 #define XSize 25 #define YSize 80 char array[ConsoleSize]; int cursorX, cursorY; void display() { puts("\r"); fwrite(array ,1 , ConsoleSize, stdout); } void clrsrc() { memset(array,' ',ConsoleSize); display(); } void gotoXY(int x, int y) { cursorX=x; cursorY=y; } int myprintf(char* text, ...) { va_list arglist; int n; va_start(arglist, text); n = sprintf(&array[cursorX*YSize + cursorY] ,text, arglist); va_end(text); display(); return n; } int main() { clrsrc(); gotoXY(10,10); myprintf("test"); getchar(); gotoXY(20,60); myprintf("anothertest"); getchar(); return 0; }
*grins*
[ Dieser Beitrag wurde am 25.02.2003 um 15:48 Uhr von japro editiert. ]
[ Dieser Beitrag wurde am 25.02.2003 um 15:49 Uhr von japro editiert. ]
[ Dieser Beitrag wurde am 25.02.2003 um 15:53 Uhr von japro editiert. ]
da war noch n kleiner bug drinn
[ Dieser Beitrag wurde am 25.02.2003 um 19:08 Uhr von japro editiert. ]
-
Original erstellt von japro:
unter windows z.b ist die konsole eigentlich immer 80*25...Meine ist 100*50, mit 3000 Zeilen Puffer. Und nu?
-
dann schreibt man halt die werte für die grösse in eine art inifile oder so anstatt so wie ich mit ner konstante :)... ich wollte auch nicht ein allheilmittel liefern aber ich wollte nur zeigen das man doch auch mit standard c so etwas wie gotxy und clrscr "emulieren" kann
-
Dann nehm ich meine Maus und ziehe das Fenster ein Stück größer.
(OK jetzt fängst du SIGWINCH ab und... also, ANSI ist das jedenfalls nicht mehr ;))
-
och menno jetzt macht mich nicht so fertig nur weil mal ne idee hatte ... ich weiss selber das das von den einstellungen abhängig is und nicht im geringsten garantiert ist das ne konsole ne bestimmte grösse hat. aber so wie mein code da steht isser standard!
p.s. also bei mir (win) ändert sich nur die schriftgrösse wenn ich das fenster vergrössere oder verkleinere :p[ Dieser Beitrag wurde am 25.02.2003 um 19:58 Uhr von japro editiert. ]
-
@p.s.: Jo nervt mich auch immer