2

PDcurses を使用していて、Enter キーを で押したときに while ループを終了させようとすると、whilewhile(key != KEY_ENTER)ループが終了しません。ただし、で同じループを終了させようとするとwhile((char)key != '\n')、Enter キーを押すたびに正常に終了します。なぜ機能し'\n'、機能しないのKEY_ENTERですか?

ところで、keyintです

これが関連する数行のコードであることを願っています。

int key;
while((char)key != '\n') {
    key = getch();
    ...
}
4

2 に答える 2

3

getch()は、CランタイムライブラリのANSIC標準で定義されている関数です。

Windows、Linuxなどのほとんどのシステムでは、この関数は'\n'、ユーザーがEnterキーを押したときに戻るように実装されています。比較のために、Windowsでは、(Enterの)キーを押すこと自体がキーコードとして表される場合がありますVK_ENTER

PDCursesは、キーコードをASCII値に変換します。

最初にPDCurses関数を呼び出すと、必要なキー値を取得できますraw(); nonl();。また、おそらくwgetch()新しいコードに使用する必要があります。

于 2010-06-03T04:52:06.967 に答える
2
KEY_ENTER == 0x157, '\n' == 0xA

'\n' は標準の ASCII 改行で、KEY_ENTER はキーボード コードを表します。PDCurses コードを参照してください。

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

于 2010-06-03T04:31:14.917 に答える