質問

私が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コード.

詳細については、コードの関連部分を投稿する必要があります。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top