No.6ベストアンサー
- 回答日時:
getch()を使えば勝手にキー入力待ちになりますので、
質問の答えとしてはkbhit()は不要です。
昔はキーボードでゲームをやろうとすると、
kbhit()とgetch()を組み合わせて使っていました。
アルタイムキー入力をやるために、
kbhit()が必要だったわけですが、
今回の場合はキー入力を待ちたいわけですから、
単に...
_getch();
だけでうまくいくと思います。
ありがとうございますKOH_daさん。
かなり悩んでやっとあそこに辿り着いたんですが、少し?違ってたみたいです(^_^;)
初めはキー入力を待つためにscanfでいろいろ試してたんですが全くもって
うまくいかなかったんで質問して正解でした。
>昔はキーボードでゲームをやろうとすると、
>kbhit()とgetch()を組み合わせて使っていました。
頑張っていつかゲームみたいな物を作ってみたいと思います。
またよろしくお願いします。
No.5
- 回答日時:
えっと、kbhit()を使う理由なのですが…。
質問文に“キーを押した時”とあったので「入力文字は必要無い」と判断していました。
純粋に「キー入力があったこと」を報告する関数がkbhit()で入力した値を取りこむ関数がgetch()です。
> コンソールアプリケーションでしか使えないと言う事でしょうか?
getch()、kbhit()共にANSI標準ライブラリ関数ではないのでWindowsのMS-DOSプロンプト(WindowsNTY/200のコマンドプロンプト)とMS-DOSのみで利用可能と考えた方が良いでしょう。
toysmithさん、ありがとうございます。
>質問文に“キーを押した時”とあったので「入力文字は必要無い」と判断していました。
はい、その通りです。特に入力文字を表示させるまでは考えてませんでした。
Helpにもtoysmithさんと同じことが書かれていました。
結果、ああ言う風になったんですが・・・初心者には難しいですね(^_^;)
とりあえず、ここで教えていただいた事を頑張ってやってみます!
勉強になりました。
またよろしくお願いします。
No.4
- 回答日時:
while( !_kbhit() ){}
_getch();
上の while(~){} は不要ですよ。
_getch() だけでプログラムは停止します。
_getch() の使い方はコンソールアプリで使うキー入力なのでこれで OK です。
haru-pさんありがとうございます。
Helpに_kbhit()がキー入力みたいな事が書かれていたので必死の思いで
これに辿り着いたんですが・・・。
while( !_kbhit() ){} ←何かのキーを押すまでループ
_getch(); ←キー情報を開放
のような感じで一人で納得してました。
実はいらなかったんですね、while( !_kbhit() ){}
これから書き直そうと思います。
またよろしくお願いします。
No.3
- 回答日時:
コンソールアプリケーション(Windows上の)に依存する方法です。
移植性はありませんので御注意ください。
kbhit()または_kbhit()で「キーを押した」事がわかります。
キー入力が確認されたらgetch()または_getch()で入力文字を取りこみます。
アプリケーション終了時なら文字を取りこむ必要が無いのでkbhit()で入力待ちすれば良いでしょう。
この回答への補足
とりあえず、
while( !_kbhit() ){}
_getch();
と書いたら中断することが出来ました。
何か使い方が間違ってるような気がするんですが、
もっといい方法があれば教えてもらえないでしょうか?
よろしくお願いします。
ありがとうございます、toysmithさん。
>コンソールアプリケーション(Windows上の)に依存する方法です。
>移植性はありませんので御注意ください。
コンソールアプリケーションでしか使えないと言う事でしょうか?
とにかく頑張ってやってみます。getch()で入力文字を取り込めばprintfなどで
表示させられるということですね。ありがとうございました。
結果を報告したいので締め切りはもう少し待ってください。
No.2
- 回答日時:
「キーボードを押すまでウインドウを閉じないように」は、
メニュー [ビルド]→[アクティブな構成の設定]→[Win32 Debug]を選択して [OK] ボタンを押しビルドします。
そして、プログラムが閉じてしまいそうな場所(ソース上)へカーソルを移動させて [F9] キーを押してみて下さい。
左側に赤い●が付くでしょ。
[F5] キーを押してプログラムを実行させると、その●印のところで処理が中断されます。
例えばコンソールアプリであれば main の一番最後の return に●を付けて下さい。
<<プログラマが日常茶飯事に使う手法です>>
この回答への補足
とりあえず、
while( !_kbhit() ){}
_getch();
と書いたら中断することが出来ました。
何か使い方が間違ってるような気がするんですが、
もっといい方法があれば教えてもらえないでしょうか?
よろしくお願いします。
ありがとうございます、haru-pさん。
こんな便利な方法があったとは・・・試して見ます。
一応、Helpなどある程度目を通したんですが、これまた嫌がらせの様に
専門用語の嵐でして理解しきれませんでした。
使い勝手もよろしくないような気がします。なれれば良いのかもしれませんが・・・。
またよろしくお願いします。
No.1
- 回答日時:
私と同じレベルですね(笑)。
翔泳社から発売になっている本がわかりやすいと思います。
VisualC++(1)はじめてのWindowsプログラミング
山本 信雄著、2,600円+税です。
続編があと2冊ありますが、極めて退屈な本なので、
(1)だけ買うのが正解だと思います。
で、答えなんですが、
プログラムを終わらせなければ、窓は閉じないはずなので、
getch()でキー入力を待つようなプログラムを組めばいいと思います。
この回答への補足
とりあえず、
while( !_kbhit() ){}
_getch();
と書いたら中断することが出来ました。
何か使い方が間違ってるような気がするんですが、
もっといい方法があれば教えてもらえないでしょうか?
よろしくお願いします。
ありがとうございます、KOH_daさん。
2,600円+税は今の私には手が出せません(T_T)
こういう本は何故かまるで嫌がらせのように高いですね。
getch()ですか・・・使い方がいまいちわかりませんが調べて見ます。
ありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) こんにちは。ExcelVBA初心者につき困っています。Functionで始まっている処理の中で、処理 1 2022/06/18 21:40
- Java java 飾子を付けること(public static・・・) ・コンソールへの出力処理はmainメ 2 2022/06/16 19:34
- マウス・キーボード キーボード設定で困っています。長文です。 2 2022/12/10 12:44
- マウス・キーボード パソコンのファンクションキー(F12)をきかなくできないでしょうか? 3 2022/05/25 18:01
- Mac OS Macで Microsoft Remote Desktop を使うとキーボードの配列が変わってしまう 1 2022/08/08 17:27
- マウス・キーボード キーボードのCaps Lockキーと変換キーの挙動がおかしくなりました。 4 2022/09/04 22:44
- Java javaの質問です 次の機能を有するメソッド4つを自クラスに作成し、実装したいです 【機能】 足し算 1 2022/06/15 17:49
- デジタルカメラ FujifilmX-A7のF値について カメラ初心者です 飼い猫を撮影する為に最近Fujifilmの 4 2022/05/04 17:37
- Windows 10 PCの初期化をしたのにマイクロソフトアカウントが残っている 2 2023/03/21 20:48
- デスクトップパソコン MACのF1からF12までのキーをNECキーボードで操作できるようにする方法を教えてください。 2 2023/04/01 21:45
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
数字以外が入力されたらエラー...
-
正負を反転させて出力するプロ...
-
scanf が無視されます
-
ワードで文字を入力する時の変...
-
double型が正常に認識されてい...
-
java初心者です。入力されたの...
-
C言語 逆ピラミッドの作り方
-
"scanf"でエンターで改行させな...
-
c言語応用で血液型判定プログ...
-
getchar()について 教えてくだ...
-
【再々投稿】VBAのプログラムで...
-
Java モンスターブリーダー
-
プログラミング初心者です。 Py...
-
getc 等の違い
-
2進数の1の数を数える問題
-
C言語について
-
入力値が1以下、かつ数字以外の...
-
プログラミングの問題です 「金...
-
Yesならこっちへ、NOなら...
-
4桁の数字以外を入力したらエラ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
*をユーザーが入力した数字の数...
-
正負を反転させて出力するプロ...
-
数字以外が入力されたらエラー...
-
プログラミング初心者です。 Py...
-
double型が正常に認識されてい...
-
java初心者です。入力されたの...
-
Eclipseコンソール表示を、リセ...
-
scanfが2回使えない・・・?;
-
C言語scanf_sで何故か2回入力に...
-
if文の条件にscanf関数を使うと…?
-
プログラミングの問題です 「金...
-
Linuxで入力待ちなしkeyread関...
-
ワードで文字を入力する時の変...
-
cout関数を使っているのですが...
-
batプログラム上で文字列を入力...
-
Userformの入力順序をタブオー...
-
scanf が無視されます
-
C言語 逆ピラミッドの作り方
-
gets_sがうまく動かない
-
Excel VBAで、Application.Inpu...
おすすめ情報