- ベストアンサー
C言語での方向キー入力判定
C言語でキーの入力判定をするプログラムを作ってい ます。下の例だとeやエンターを押したときは認識できる のに、方向キー↑を押したときはなぜか無反応です。 コンパイラはボーランドでOSはXPでコンパイルした のですが、何がいけなかったのでしょうか? #include <stdio.h> #include <conio.h> #include <windows.h> void check(void){ int key; key = getch(); switch (key){ case 'e': puts("e"); break; case VK_RETURN: puts("ENTER"); break; case VK_UP: puts("UP"); break; } } int main(void) { while(1){ check(); } return 0; }
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
getch がVK_UPを返すのではないです。 ↑の場合0と0x48の2つのコードが返ります
その他の回答 (1)
- MrBan
- ベストアンサー率53% (331/615)
getch で戻ってくるのは、仮想キーコード(VK)ではないので、VK_UP は来ません。 リターンや英字などは、たまたまVKと同じ値が割り当てられているので、動いているだけです。 ASCIIコードを調べるなりしてみてください。 # VTかなにか来てませんか。(うろ覚え
お礼
ありがとうございます。調べたらこんな感じでした。 case 0x4b: puts("LEFT"); break; case 0x50: puts("DOWN"); break; case 0x4d: puts("RIGHT"); break; case 0x48: puts("UP"); break;
お礼
ありがとうございます。その数値で見事動作しました!