key_enter vs ' n'?
質問
私がpdcursesを使用しているとき、そしてEnterキーがで押されたときに時間ループを終了するようにしています while(key != KEY_ENTER)
, 、whileループは決して終了しません。しかし、私が同じループを締めくくるようにしようとするとき while((char)key != '\n')
, 、Enterを押すたびに正常に終了します。なぜ '\n'
仕事ではありません KEY_ENTER
?
ところで、 key
INTです
そして、これが関連するコードの数行であることを願っています:
int key;
while((char)key != '\n') {
key = getch();
...
}
解決
getch()
CランタイムライブラリのANSI C標準によって定義される関数です。
Windows、Linuxなどのほとんどのシステムでは、この関数は戻るように実装されています '\n'
ユーザーがEnterを押したとき。比較のために、Windowsではキープレス自体(Enter)がキーコードとして表される場合があります VK_ENTER
.
PDCURSESは、キーコードをASCII値に変換しています。
最初にpdcurses関数を呼び出すと、必要なキー値を取得できます raw(); nonl();
. 。また、おそらく使用する必要があります wgetch()
新しいコード用。
他のヒント
KEY_ENTER == 0x157, '\n' == 0xA
' n'は標準のASCII Newlineであり、Key_Enterはキーボードコードを表します。見る PDCURSESコード.
詳細については、コードの関連部分を投稿する必要があります。
所属していません StackOverflow