funktion til aflæsning af tastaturinput

Tags:    c++ databaser

jeg har bruge for en funktion/kommando der kan aflæse hvad bruger trykker uden at standese programmet!

jeg har prøvet at brug kbhit() men det retunere bare -1 når en tast er trykke uanset hvad, jeg har også prøvet at bruge scanf("%c",ch); og ch=getch();

men disse standsede programmet!


mvh.
Thomas Christensen



7 svar postet i denne tråd vises herunder
2 indlæg har modtaget i alt 3 karma
Sorter efter stemmer Sorter efter dato
Hej Thomas Christensen
Er det dos eller Windows du programmere programmer til. Jeg gætter på det er dos, for det ville ikke være noget problem hvis du programmeret i Windows, hvor det forslåes at du anvender Tråde (samme måde som at anvende flere programmer)....

Hvis det er i dos du programmere er det kbh() du skal bruge til at finde udaf om der er trykket på en tast og herefter skal du vist læse tasten med getch(), men kan ikke helt huske det er nogle år siden jeg har anvendt denne....

Mvh
Janus S. Andersen

P.s Anvend kbh() til at se om der er trykket på en tast, og læse derefter denne tast. (Brug ikke scanf eller nogle af disse. Brug en funktion der kun læser en tast fra keyboardet.)





her er løsningen...(og nej man ska ik bruge threads...jesus)

kbhit() er god nok...den siger til hvis der er trykket på en knap
men den siger ikke hvilken knap. det skal du bruge getch() til.
med mindre det er meget vigtigt at der ikke spildes en eneste cpu cycle på at chekke hver enkelt knap, så behøves kbhit slet ikke. getch() er mere end nok, f.eks :

#include <stdio.h>
#include <conio.h>

void main ()
{
int i=0;
bool done=false;
while (!done)
{
switch (getch())
{
case 'a':
i--;
break;
case 'd':
i++;
break;
case 27: // 27 er koden for escape
done=true;
break;
}
/* den næste linie sætter først cursoren ved starten af linien (\\r) og derefter skriver den tallet i efterfulgt af nogle mellemrum til at slette hvad nu end for et stort tal der måske stod der før*/
printf("\\r%d ",i);

}
}



Uden at vide tror jeg, at du skal lave flere threads i programmet...

mikl-dk | mikl@mikl.dk



Uden at vide tror jeg, at du skal lave flere threads i programmet...

mikl-dk | mikl@mikl.dk


threads?

-thomas



Ja, jeg ved ikke helt, hvordan det skal forklares (nok også pga., at jeg ikke er så meget inde i det :D) - men det er noget med at man kan flere ting simultant i et program. Prøv at google det...

mikl-dk | mikl@mikl.dk



Jeg hedder ikke Jesus, fætter !
Hvad skal du programmere ???

Mvh
Janus
* Life is a dream in a programmers heaven *



Uden at vide tror jeg, at du skal lave flere threads i programmet...

mikl-dk | mikl@mikl.dk


Eller med et kald til select. Select tjekker en filedescriptor (socket, åben fil, standard in, whatever) om der kan læses fra/skrives til den og returnerer efter en given tid. Bruge den til at tjekke om stdin køen er tom.



t