problem z programem

mooshie00

Użytkownik
Dołączył
Styczeń 9, 2011
Posty
6
Witam,
czy jest jakis sposob na napisanie w C programu, który, dajmy na to, wyswietla ciag zer tak dlugo, dopuki nie kliknie się spacji. Myslalem, zeby uzyc do tego biblioteki (time.h), ale szczerze mowiac nie bardzo wiem jak sie do tego zabrac. Jakies pomysly?

z gory dzieki i pozdrawiam
 

kanar123

Użytkownik
Dołączył
Marzec 27, 2008
Posty
451
Pętla while > warunek jeśli getchar(); zwróci kod spacji > skończ... ew. przechwycić zdarzenie wciśnięcia klawisza ;]
 

mooshie00

Użytkownik
Dołączył
Styczeń 9, 2011
Posty
6
no tak, ale jak uzyje getchara to w kazdym powtorzeniu petli bedzie proces zatrzymywalo, w oczekiwaniu na pobranie stringa do bufora, nie? A mi chodzi o to zeby petla sie powtarzala caly czas, bez przerw, a dopiero po kliknieciu konczyla. Np, dajmy na to, funkcja ktora co setna sekundy wyswietla losowe liczby tak dlugo az klikne spacje i zatrzymuje sie na ostatniej (to tylko przyklad, po prostu potrzebuje przerywania petli kliknieciem). O ile wiem, ani getchar ani getch tu nie pomoze. A ocb z tym przechwycaniem zdarzenia wscisniecia klawisza?
 

mooshie00

Użytkownik
Dołączył
Styczeń 9, 2011
Posty
6
nie wiem, albo czegos nie widze, albo jestem naprawde cienki z tematu. Mozecie mi zapisac tego while'a dla while(!warunek) {instrukcja;}, gdzie warunek to klikniecie spacja. Bylbym zobowiazany.
 

mooshie00

Użytkownik
Dołączył
Styczeń 9, 2011
Posty
6
innego sposobu nie ma? np. z gettime() ? bo bardzo malo jest o programowaniu wielowatkowym w internecie i nie bardzo wiem jak w ogole sie do tego zabrac..
 

Legalnl

Użytkownik
Dołączył
Październik 8, 2008
Posty
828
Myślę żę wystarczy to, nie testowałem ale powinno działać, kiedyś robiłem taki ala stoper.

Kod:
while( kbhit() )
        {
            // reszta kodu
        }

Zresztą jak byś pomyślał można wrzucić procedure do timera, i przechwytując komunikaty, które odbiera aplikacja ( wciśnięcie klawisza, spacja) można wyłączyć timera.
 

mooshie00

Użytkownik
Dołączył
Styczeń 9, 2011
Posty
6
oo super tego mi bylo potrzeba. A konkretnie tak kod wyglada:



#include <stdio.h>
#include <stdlib.h>


int main()
{

while (1) {
printf(".");
if (kbhit())break;
}
}
 
Do góry Bottom