"Loop interrupt"

Tags:    c++

Jeg skal bruge noget kode, der kan stoppe et loop, hvis man trykker på en bestemt tast, f.eks. s.
Så længe man ikke trykker på s, skal loop'et bare køre videre. Tænkte allerførst på getch(), men den vil jo vente på at der bliver trykket på en tast, før den kører videre i loop'et, og det duer ikke, da loop'et kører automatisk, uden indput fra brugeren.

Håber der er nogen der kan hjælpe, og håber i forstår hvad jeg mener... :D

/Mads



5 svar postet i denne tråd vises herunder
2 indlæg har modtaget i alt 4 karma
Sorter efter stemmer Sorter efter dato
do
{
kode
} while (condition);





Indlæg senest redigeret d. 08.03.2007 07:57 af Bruger #8943

Mht. til at lave tråde, så prøv at tag et kig på det link her. Specielt så er [About] linket interesant.

Designing a Thread Class in C++
http://jessn.blogspot.com/2006/07/designing-thread-class-in-c.html


Hth



int main(void)
{
struct termios t, save_t;
int tastetryk;

tcgetattr(0, &t);
save_t = t;
t.c_lflag &= ~(ICANON);
t.c_cc[VMIN] = 0;
t.c_cc[VTIME] = 0;
tcsetattr(0, TCSANOW, &t)

while (1+1==2)
{
if ((tastetryk = fgetc(stdin) ) )
{
if (tastetryk != EOF)
{
if (tastetryk == 's')
{
tcsetattr(0, TCSANOW, &save_t);
break;
}
}

..
..




Indlæg senest redigeret d. 07.03.2007 19:21 af Bruger #9859
Nogle kompilere på windows har kbhit (og/eller _kbhit()):

Fold kodeboks ind/udKode 




Hvis ikke Bertels version virker skal du nok ud i noget multithreaded, hvor én tråd kører loopet og en anden venter på tastatur input.

Nu nævner du ikke hvilket operativ system, det skal være til, og jeg nægter at antage, at det er Windows :-)
Her er en Linux version:
Fold kodeboks ind/udKode 


Under Windows skal du kigge på CreateThread funktionen.



Indlæg senest redigeret d. 08.03.2007 14:53 af Bruger #2695
t