2013-03-24 7 views
6

Ich versuche, eine Funktion zu erstellen, die printf eine bestimmte Zeichenfolge, wenn der Benutzer eine beliebige Taste auf der Tastatur drückt EXCEPT für Kapital P, wenn der Benutzer P drückt, dann wird es brechen die Schleife.Wie kbhit und getch (C-Programmierung)

Allerdings glaube ich nicht, dass ich _kbhit und _getch richtig verwende. Ich benutze die 80-Nummer, weil das die ASCII-Zeichen für die Verwirrung für 80 .... sorry ist

void activateAlarm(int channelID) { 

    int key = 0; 

    while(temperatureChannel[channelID].currentTemperature > temperatureChannel[channelID].highLimit 
     ||temperatureChannel[channelID].currentTemperature < temperatureChannel[channelID].lowLimit) { 

     beep(350,100); 

     if (_kbhit()) { 
      key = _getch(); 
      if(key == 'P'); 
       break; 
     }  
    } 
} 
+3

'if (Taste == "P"); break; 'sollte eher' if (key == 'P') break; ' – moooeeeep

Antwort

11

Keine Notwendigkeit, die Code-Gespräche besser zu erklären:

#include <conio.h> 

// ... 

printf("please press P key to pause \n "); 

int key = 0; 

while(1) 
{ 
    if (_kbhit()) 
    { 
     key =_getch(); 

     if (key == 'P') 
     break; 
    }  
} 
+2

Die # 4-Bearbeitung sollte _nicht_ genehmigt sein, da sie einige Bugs in den Code einführte: (1) Es war korrekt,' key' zu deklarieren ein 'int', da dies der tatsächliche Rückgabetyp von' _getch() 'ist. (2) Die führenden Unterstriche auf '_kbhit()' und '_getch()' hätten nicht gelöscht werden sollen; Die Visual C++ - Bibliotheken definieren die meisten POSIX-Additionen nicht mit den POSIX-Namen, da sie technisch den ISO C++ - Standard verletzen. –

Verwandte Themen