PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Bin ich jetzt dumm oder was?



jrk
06-09-2001, 09:28
Hallo alle, ich hab hier ein Problem das mich jetzt schon die hälfte von meinem Schlaf geraubt hat!
Folgender Code :
unsigned long int atime, btime, diff;
diff = 0;

atime = btime = time(0);

for(; ;)
{
atime = time(0);
diff = atime - btime;
if (diff == 3)
{
printf(".");
btime = atime;
};
}
sollte doch nach immer 3 sekunden einen Punkt auf den Bildschirm schreiben, oder nicht? Tatsache ist, das das Programm fehlerfrei mit gcc -O2 -o timetest time.c compiliert und auch ausführt, aber dann nix, ja überhaupt nix auf den Bildschirm schreibt! Der Gag dabei ist, wenn ich jetzt statt printf("."); printf("Irgendwas nur der Newline ist wichtig\n"); verwende schreibt er es hin! Das kann doch nicht sein das ich Text nur mit einem Newline ausgeben kann?

Ich bin für jede Hilfe dankbar, bin schon am verzweifeln :(

thommy
06-09-2001, 09:58
Lasse ein fflush(stdout); dem printf("."); folgen und der Ausgabepuffer sollte geleert werden. Alternativ kannst Du mit fprintf(stderr, ".") auch gleich auf stderr schreiben, womit Ausgaben ungepuffert erfolgen.

Davon abgesehen, handelt es sich doch wohl nur um ein Testprogramm? Oder willst Du wirklich aktiv eine Zeitspanne überdauern?

Thomas

jrk
06-09-2001, 10:20
Vielen Dank, ich werde das gleich mal ausprobieren! (:
Ja, das ist nur ein Testprogramm, ich lerne gerade socket-programmierung und habe für den Server eine Funktion gebraucht die na einen bestimmten zeitabstand nach neuen verbindungen sucht!