x-kom hosting

Skrócenie procesów w C.

vip268
utworzono
utworzono

Chciałbym sie zapytać czy jest możliwość dostosowania czasu trwania komend w C np. getchar(), scanf itd. Chodzi mi czy można jakoś odgórnie je zodyfikowac by czekały na enter do okreslonej chwili. NP. program stoi czeka na znak i po powiedzmy minucie przechodzi dalej po nie uzyskaniu klawisza enter. Z góry thx za odp.

leggo
komentarz
komentarz

Ani getchar, ani scanf nie dają możliwości określenia czasu oczekiwania. Takie ograniczenie w programie musisz zrealizować samodzielnie.

vip268
komentarz
komentarz

Tylko te komendy czekaja na podanie z klawiatury, a mi jest potrzebne takie coś żeby wczytywać np. klawisze w czesie rzeczywistym podczas pętli nie przerywajac dzialania. Cos na zasadzie czeka sekunde na klawisz, jesli nie otrzyma to kontynulujev i przechodzi do nastepnego polecenia.

rafalluz
komentarz
komentarz

Zapoznaj się z wielowątkowością. W mainie robisz wątek, który wczytuje znak/znaki, a po określonym czasie go ubijasz, niezależnie od tego, czy wczytał, czy nie. Ale po ubiciu musisz sprawdzić, czy znak/znaki wczytano.

Garrappachc
komentarz
komentarz

Zapomnij to scanf. Takie coś da się zrobić na jednym wątku, ale to wymaga zewnętrznej biblioteki. W przypadku Windowsa to będzie niewielka część WinAPI, a w przypadku Linuksa - X. Pobierasz czas systemowy, w pętli pobierasz stan klawiatury i sprawdzasz ile czasu upłynęło. Jeżeli jakiś klawisz został wciśnięty, przerywasz pętlę, tak samo w przypadku przekroczenia wybranego czasu.

vip268
komentarz
komentarz

Poczytam o wątkach na pewno się przyda. A co do scanf myslałęm o czasie systemowym i sprawdzaniu go, ale wszystkie również scanf z tego co mi wiadomo czeka enter. Bedzie tak czeka czeka i nie przejdzie do komenty sprawdzenia czy okreslony czas minoł nie wiem jak można to przeskoczyć od niczego poczytam o tym WinAPI i zobacze. Jak by ktos mial jakies rady jeszcze z góry thx.

Wciąż szukasz rozwiązania problemu? Napisz teraz na forum!

Możesz zadać pytanie bez konieczności rejestracji - wystarczy, że wypełnisz formularz.

×
×
  • Dodaj nową pozycję...

Powiadomienie o plikach cookie

Strona wykorzystuje pliki cookies w celu prawidłowego świadczenia usług i wygody użytkowników. Warunki przechowywania i dostępu do plików cookies możesz zmienić w ustawieniach przeglądarki.