getch()を使用して文字を一度に1つずつ読み取り、それらをバッファーにコピーする単純な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ステートメントが呼び出されていることがわかります。文字を削除できるようにするには、他に何をする必要がありますか?