我有一個簡單的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