2011-07-22 17 views
5

में कंसोल से इनपुट पढ़ें मैं कंसोल एप्लिकेशन में टर्मिनल पर उपयोगकर्ता इनपुट पढ़ने के लिए scanf() का उपयोग कर रहा हूं। scanf तब तक प्रतीक्षा करता है जब तक उपयोगकर्ता पढ़ने के लिए रिटर्न कुंजी हिट नहीं करता। क्या प्रत्येक कीस्ट्रोक पर उपयोगकर्ता इनपुट पढ़ने का कोई तरीका है?ओएसएक्स

उत्तर

6

सामान्य तरीका getch फ़ंक्शन (मैक पोर्ट) ncurses से फ़ंक्शन का उपयोग करना होगा।

ध्यान दें कि getchar एक एकल वर्ण पढ़ता है, लेकिन यह अभी भी सामान्य रूप से पढ़ने के लिए buffered करता है, इसलिए आपको वापस आने से पहले 'वापसी'/'enter' दबाएं।

1
char c = getchar(); 

यह चाल चलाना चाहिए।

+3

असल में, इसे 'int' – MByD

+2

क्यों पढ़ना बेहतर है? वह एक 'char' चाहता है - और' int 'अधिक मेमोरी लेता है –

+3

int के साथ आप आउट-ऑफ-बैंड मानों की जांच भी कर सकते हैं, जब स्थानीय चर के रूप में घोषित किया जाता है तो यह संभवतः एक ही स्थान ले लेगा। – MByD

2

getch() टाइप की गई स्टडीन से वर्ण स्ट्रीम लौटाता है।

+0

हिट नहीं करता है यह बहुत असामान्य होगा - यह डिफ़ॉल्ट व्यवहार नहीं है। –

+0

-1 getchar भी तब तक प्रतीक्षा करता है जब तक उपयोगकर्ता वापसी कुंजी हिट नहीं करता – user411313