2013-03-24 21 views
6

我試圖創建將printf如果用戶按下鍵盤除了資本P上的任何按鈕,如果用戶按下某個字符串P那麼它會打破功能循環。如何使用的kbhit和殘培(C編程)

但是,我不認爲我正確使用_kbhit_getch。我用的是80號,因爲這是80的ASCII符號....任何混亂

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

'如果(鍵== 'P'); break;'should'if(key =='P')break;' – moooeeeep 2015-04-17 06:40:24

回答

11

不用解釋,代碼會談更好的遺憾:

#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

#4編輯應該不被批准,因爲它引入了一些錯誤代碼:(1)將'key'聲明爲一個'int',因爲這是'_getch()'的實際返回類型。 (2)'_kbhit()'和'_getch()'上的前導下劃線不應該被刪除; Visual C++庫不使用POSIX名稱定義大多數POSIX風格的添加,因爲從技術上講,這些違反了ISO C++標準。 – 2017-02-10 17:45:00