OKWAVEのAI「あい」が美容・健康の悩みに最適な回答をご提案!
-PR-
解決
済み

なぜに0が表示されるの?

  • すぐに回答を!
  • 質問No.245992
  • 閲覧数77
  • ありがとう数2
  • 気になる数0
  • 回答数2
  • コメント数0

お礼率 29% (7/24)

キー入力を調べるために以下の
プログラムを作成したのですが・・・

#include <stdio.h>
#include <stdlib.h>
#include <conio.h>

int main(void)
{
intinkey = 0;

while (1) {
inkey = getch();
if (inkey == 0x1b) {
break;
}
printf("%d %x\n", inkey);
}

}

↑↓→←とかのキーは、
変数inkeyの値を表示する前に、
0 0と表示されます。
なぜなんでしょうか?
ほかのキーでは、普通に表示されます。
教えてください。
通報する
  • 回答数2
  • 気になる
    質問をブックマークします。
    マイページでまとめて確認できます。

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

  • 回答No.2
レベル9

ベストアンサー率 35% (33/92)

まず、cherry_moonさんが書かれている様に、printf() 関数の使い方が
おかしいですね。この場合、 printf("%d %x\n", inkey, inkey); と
書くのが正解かも知れませんね。

ただ、ご質問の内容は、何故、矢印キーの場合は、値を表示する前に 0 0
と表示されるのかと言う事なので、意図している回答とは違いますね。

で、何故、0 0 と表示されるかですが、それは、 getch() の仕様です。
リファレンスマニュアル等をもう一度読まれてみてはどうでしょうか?
ファンクションキー、矢印キーなどは、getch() は2回呼び出されると
書かれているかと思います。また、その1回目は、0、または 0xE0 が
返されると書かれています。
お礼コメント
mayoler

お礼率 29% (7/24)

リファレンスマニュアルとか無いんです。
全部無料の使ってますから。

ありがとうございました。
でも、プログラム自体には、
printf()関数の使い方以外問題は
無かったようですね。

これぐらいのことなら、getch()関数を
検索すればよかったのかなぁ・・・なんて。
(聞いておいてすいませんです。。。)

また、お世話になるかもしれませんが
よろしくお願いします。
投稿日時 - 2002-04-03 11:41:45
-PR-
-PR-

その他の回答 (全1件)

  • 回答No.1
レベル9

ベストアンサー率 36% (37/102)

> printf("%d %x\n", inkey); ここがおかしいです。 printf("%d %x\n", a, b); と書くと、a を 10 進数で、 b を 16 進数で出力する。 という意味です。 mayoler さんの場合、b になるものがありません。 %d か %x のどちらかを消してみて下さい。 ...続きを読む
> printf("%d %x\n", inkey);

ここがおかしいです。
printf("%d %x\n", a, b);
と書くと、a を 10 進数で、 b を 16 進数で出力する。
という意味です。

mayoler さんの場合、b になるものがありません。
%d か %x のどちらかを消してみて下さい。
お礼コメント
mayoler

お礼率 29% (7/24)

一回やったんですが、
inkey変数を引っ張るのは一回でも、
できるんで、そのままにしちゃったんですけど。。。
投稿日時 - 2002-04-03 11:42:53


このQ&Aで解決しましたか?
関連するQ&A
-PR-
-PR-
こんな書き方もあるよ!この情報は知ってる?あなたの知識を教えて!
このQ&Aにはまだコメントがありません。
あなたの思ったこと、知っていることをここにコメントしてみましょう。

その他の関連するQ&A、テーマをキーワードで探す

キーワードでQ&A、テーマを検索する
-PR-
-PR-
-PR-

特集


いま みんなが気になるQ&A

関連するQ&A

-PR-

ピックアップ

-PR-
ページ先頭へ