• ベストアンサー

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; }

質問者が選んだベストアンサー

  • ベストアンサー
  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.2

getch がVK_UPを返すのではないです。 ↑の場合0と0x48の2つのコードが返ります

amazontester
質問者

お礼

ありがとうございます。その数値で見事動作しました!

その他の回答 (1)

  • MrBan
  • ベストアンサー率53% (331/615)
回答No.1

getch で戻ってくるのは、仮想キーコード(VK)ではないので、VK_UP は来ません。 リターンや英字などは、たまたまVKと同じ値が割り当てられているので、動いているだけです。 ASCIIコードを調べるなりしてみてください。 # VTかなにか来てませんか。(うろ覚え

amazontester
質問者

お礼

ありがとうございます。調べたらこんな感じでした。 case 0x4b: puts("LEFT"); break; case 0x50: puts("DOWN"); break; case 0x4d: puts("RIGHT"); break; case 0x48: puts("UP"); break;

関連するQ&A