PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : C: Warten Funktion - komisches Verhalten



Stefan Feeser
24-08-2006, 15:36
Hallo zusammen,

ich bin mal wieder ein wenig am ausprobieren und will, dass ein Programm an einer Stelle wartet. Ohne es genau zu wissen, dachte ich, die Funktion heisst sicher sleep wie unter UNIX das entsprechende Programm. Leider wartet das Programm nicht ausreichend und was ich auch komisch finde ist, dass es keine Rolle spielt ob ich nun die Headerdatei durch include lade oder nicht???

Hier mein Quellcode, was mache ich hier falsch?



# include <stdio.h>
# include <unistd.h>

# define CLEAR printf("\033[2J")
# define POSITION(i_zeile, i_spalte) printf("\033[%d;%dH",i_zeile,i_spalte)

int main(void) {

int i_i = 1;

CLEAR;
POSITION(0,0);
printf("Cursortest\n");
POSITION(2,0);
for (i_i == 1; i_i == 10; i_i++) {
printf(".");
sleep(100);
POSITION(2,i_i);
}
printf("\033[K"); /* loescht Zeile */
POSITION(2,0);
printf("done\n");
POSITION(39,0);
printf("###\n");

}


Danke für Eure Hilfe

Stefan

locus vivendi
24-08-2006, 15:57
Gut ist, das du schon mal ein komplettes Beispiel welches das Problem reproduziert gepostet hast. So muss niemand raten. Noch besser wäre es gewesen, wenn du auch ein reduziertes Beispiel gepostet hättest, so dass die Aufmerksamkeit der Leser auf das Wesentliche fällt. Ich bin mir fast sicher das du, wenn du das getant hättest, auch den Fehler selber schon gefunden hättest. Kleiner Tip: Es hat nichts mit der sleep Funktion zu tun, die könntest du auch gegen exit austauschen, und es würde sich nichts ändern.

Nochwas: Makros für CLEAR und POSITION, anstatt von Funktionen ist eine stilistische Katastrophe IMHO.

Stefan Feeser
24-08-2006, 17:58
OK, habe den Fehler in der for-Schleife gesehen. Danach wartet der Cursor aber ewig an der Position 0 in der 2.ten Zeile. Danach rauscht das Programm durch. Irgendwie bin ich blind....