2013-03-24 21 views
6

का उपयोग कैसे करें मैं printf एक फ़ंक्शन बनाने की कोशिश कर रहा हूं जो उपयोगकर्ता P के लिए कीबोर्ड EXCEPT पर कोई बटन दबाता है, यदि उपयोगकर्ता P दबाता है तो यह टूट जाएगा सूचित करते रहना।kbhit और getch (सी प्रोग्रामिंग)

हालांकि मुझे नहीं लगता कि मैं _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

'अगर (कुंजी == 'पी'); तोड़ना चाहिए, 'अगर (कुंजी ==' पी ') तोड़ना चाहिए; ' – moooeeeep

उत्तर

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 संपादन को _not_ को अनुमोदित किया जाना चाहिए क्योंकि यह कोड में कई बग पेश करता है: (1)' कुंजी 'घोषित करना सही था एक 'int', क्योंकि यह '_getch()' का वास्तविक रिटर्न प्रकार है। (2) '_bhbhit()' और '_getch()' पर अग्रणी अंडरस्कोर हटाया नहीं जाना चाहिए था; विज़ुअल सी ++ लाइब्रेरीज़ POSIX नामों का उपयोग करके अधिकांश पॉज़िक्स-शैली परिवर्धन को परिभाषित नहीं करते हैं, क्योंकि तकनीकी रूप से, वे आईएसओ सी ++ मानक का उल्लंघन करते हैं। –

संबंधित मुद्दे