我有一个简单的ncurses程序设置,每次读取一个字符与getch()并将它们复制到一个缓冲区。我遇到的问题是检测退格键的按下。下面是相关代码:使用退格与ncurses
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();
}
但尝试运行这段代码时,这是试图从行删除字符后,屏幕上出现的“这是一个测试”:
this is a test^?^?^?
和buffer
内容是:
this is a test
用GDB我知道,if语句检查删除/退格被调用,那么还有什么要我做,这样我可以删除茶racters?
“这是测试^?^?^?'缓冲区的内容,还是它出现在屏幕上?无论哪种方式,另一方面呢? – 2012-07-08 23:37:55
'这是一个测试^?^?^?'是什么出现在终端上,缓冲区包含'这是一个测试'。 – Jumhyn 2012-07-08 23:40:14