Avatar billede mwallin Nybegynder
04. december 2008 - 13:20 Der er 4 kommentarer

Afbrydelig uendelig løkke

Hej
Er det på noget måde muligt at lave en uendelig whileløkke, der kan afbrydes med et tastatur input?

Har forsøgt med med noget som:

while(!getchar())
    Blablabla;

samt:
while(getchar()!='x')
    Blablabla;

Men alt hvad jeg har forsøgt, virker enten ikke, eller også venter den på et brugerinput ved hvert gennemløb.
Meningen er at den skal lave gennemløb, og ignorere getchar(), hvis man ikke rører ved tastaturet.

På forhånd tak,
Mads Wallin
Avatar billede bitmatic Nybegynder
04. december 2008 - 14:32 #1
Der er masser af måder.

Prøv at kigge på GetAsyncKeyState() den kan du spørge om der er noget eller noget der har rørt dit keyboard.
Avatar billede ulj Nybegynder
04. december 2008 - 14:58 #2
while(1)
{
  printf("bla bla bla\n");
   
  if(getchar() == EOF)
  {
      continue;
  }

  if(getchar() == 'x')
  {
      break;
  }
}

er mit bud, har dog ikke testet det.
Avatar billede quiw Nybegynder
04. december 2008 - 21:33 #3
#include <iostream>
#include <conio.h> // til brug af !kbhit
#include <windows.h> // til brug af GetAsyncKeyState

using namespace std;

void global_key(){
    while(!GetAsyncKeyState(VK_F1) ){
            cout << "Hello world - Global hotkey\n";
    }
}
void program_key(){
    while(!kbhit()){
            cout << "Hello world - Lokal key\n";
    }
}

int main(){
    global_key(); //Denne funktion, bliver ved, indtil der bliver trykket F1 (den virker globalt, selvom programmet ikke er i fokus)
    program_key(); //Denne funktion, bliver ved, indtil der bliver trykket F1 (den virker kun lokal, altså når programmet er i fokus)
    system("pause");
    return 0;
}


- Håber det kan bruges :)
Avatar billede quiw Nybegynder
04. december 2008 - 21:48 #4
Hov, jeg burde lige gøre opmærksom på en lille fejl, kbhit() returnere selvfølgelig kun true/false, så derfor reagerer den ikke kun på F1, men på alle taster :)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester