私はgetch()で文字を一度に読み込んでバッファにコピーする簡単なncursesプログラムの設定をしています。私が抱えている問題は、バックスペースキーの押下を検出していることです。ここに関連するコードは次のとおりです。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
の内容は以下のとおりです。GDBと
this is a test
私は削除/バックスペースをチェックするif文は、私は茶を削除できるように、私は他に何をやるべき、と呼ばれていることを知っていますラクター?
'これはテストですか?'^'は' buffer'の内容ですか、それとも画面に表示されますか?いずれにせよ、他のものは何ですか? –
'これはテストですか?^ ^?^?'は端末に表示されるものです。バッファには 'これはテストです'が含まれています。 – Jumhyn