Einsendung:

Ausgabe verzögert

Ich habe da eine kleine Frage...
Ich habe ein Unterprogramm geschrieben, das eine Pause von den angegebenen Sekunden macht:

void pause(int sekunden)
{
   int startZeit=time(NULL);
   while(startZeit+sekunden>time(NULL))
      ;
};

Um das zu testen habe ich folgendes Main-Proggy geschrieben und <iostream.h> und <time.h> inkludiert:

void main()
{
   cout<<"Und los...";
   pause(3);
   cout<<"...und vorbei!";
};

Das lief aber nicht so tolle: Es machte drei Sekunden gar nichts und dann gab es "Und los......und vorbei!" aus.
Zu meiner Verwunderung lief das Programm dann mit einem endl hinter "Und los...", allerdings wieder nicht vor "...und vorbei!".
Kann mir jemand sagen, woran das liegt?

Yup. Das Programm schreibt gar nicht direkt auf den Bildschirm, sondern nur in einen Zwischenspeicher, der allerdings automatisch (wenn auch ein wenig verzögert) auf den Bildschirm geschrieben wird.
Sie haben jetzt den Rechner in einer Warteschleife festgesetzt. Der Blödi denkt, daß Sie etwas ganz wichtiges berechnen, und er sich jetzt keine Zeit nehmen darf, um den Zwischenspeicher rauszuschreiben. Sie können ihn aber mit

   cout<<flush;

dazu zwingen.
Das machen Sie mit

   cout<<endl;

ganz nebenher.

   cout<<endl;

 ist nämlich definiert als

   cout<<'\n'<<flush; // das '\n' springt auf die nächste Zeile.


Falls Ihnen Fehler im Text auffallen oder Sie Verbesserungsvorschläge haben, dann schicken Sie mir bitte eine Mail. Ich werde mich dann sofort darum kümmern.
[aktuelle Version] [inhalt] [index]      [Fehlerkorrektur, Verbesserungsvorschlag]

© Volkard Henkel <volkard@normannia.de>, last update: 08/25/00