मैं एक साधारण ncurses कार्यक्रम की स्थापना की है के साथ उपयोग करना बैकस्पेस कि पात्रों getch() और उन्हें प्रतियां एक बफर में साथ एक समय में एक पढ़ता है। मेरे पास जो मुद्दा है वह बैकस्पेस कुंजी का एक प्रेस का पता लगा रहा है। यहाँ प्रासंगिक कोड है:ncurses
this is a test^?^?^?
:
while((buffer[i] = c = getch()) != EOF) {
++i;
if (c == '\n') {
break;
}
else if (c == KEY_BACKSPACE || c == KEY_DC || c == 127) {
i--;
delch();
buffer[i] = 0;
}
refresh();
}
लेकिन जब इस कोड को चलाने का प्रयास, यह क्या लाइन से पात्रों को हटाने की कोशिश के बाद स्क्रीन पर दिखाई देता है "यह एक परीक्षण है" और buffer
की सामग्री हैं:
this is a test
gdb के साथ मुझे पता है कि अगर बयान हटाएं/बैकस्पेस के लिए जाँच बुलाया जा रहा है, इसलिए और क्या मैं इतना है कि मैं चा नष्ट कर सकते हैं कर किया जाना चाहिए racters?
'यह एक परीक्षण ^? ^? ^?' 'Buffer' की सामग्री है, या इसे स्क्रीन पर दिखने वाली चीज़ों है? किसी भी तरह से, दूसरा क्या है? –
'यह एक परीक्षण है ^? ^? ^?' टर्मिनल पर जो दिखाई देता है, बफर में 'यह एक परीक्षण है'। – Jumhyn