sleep() nie działa w pętli

Odpowiedz Nowy wątek
2011-08-30 17:01
pavon147
0

Witam!

Mam taki kod:

#include<iostream>
using namespace std;
 
int main()
{
 
for(int index=1;index<=10;index++)
{
cout<<index;
sleep(2);
}
 
}

Chcę, aby program wypisywał wartości zmiennej index w odstępach czasowych w pętli for, jednak działanie programu jest takie, że muszę odczekać dwadzieścia sekund, a następnie pokazują się wszystkie wartości naraz. Dlaczego tak się dzieje? Program piszę w systemie Ubuntu i korzystam z kompilatora g++.

edytowany 1x, ostatnio: madmike, 2016-12-13 18:26

Pozostało 580 znaków

2011-08-30 17:07
flushuj kuźwa
1

Strumienie chodzą z buforowaniem, cout<<index<<flush; albo cout<<index<<endl;, które wypisuje znak nowej linii i flushuje automatycznie.

Pozostało 580 znaków

2011-08-30 17:34
0

Nie tylko iostream lata z buforowaniem. cstdio też i w przypadku cstdio trzeba zrobić fflush(stdio) ZTCW.


"Programs must be written for people to read, and only incidentally for machines to execute." - Abelson & Sussman, SICP, preface to the first edition
"Ci, co najbardziej pragną planować życie społeczne, gdyby im na to pozwolić, staliby się w najwyższym stopniu niebezpieczni i nietolerancyjni wobec planów życiowych innych ludzi. Często, tchnącego dobrocią i oddanego jakiejś sprawie idealistę, dzieli od fanatyka tylko mały krok."
Demokracja jest fajna, dopóki wygrywa twoja ulubiona partia.
fflush(stdout) :P rozpędziłeś się z pisaniem - krwq 2011-08-30 18:15
Ano, masz rację. - Wibowit 2011-08-30 19:14

Pozostało 580 znaków

2011-08-31 20:00
0

Od kiedy to sleep nie chodzi w petli?
podałeś:

Sleep(2);

czyli 0.0002 sekundy,

Sleep(1000) to jedna sekunda czyli: Sleep(20000) to 20 sek

Pod linuksem sleep jest w sekundach a w milisekundach usleep. - sperling 2011-08-31 20:19
sorki nie doczytalem :D - diesellas 2011-08-31 20:26
Sleep(2) to 0.002 sekundy a nie tak jak podałeś! - Szewy 2011-08-31 20:27

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0