無限ループさせているwhileやfor文などで、
何かのキーを押すとループを抜けるように設定したいのですが可能でしょうか?
(scanfやcinなどをループの中に組み込まずに。ctrl+Cも無しで。)
(あと、フォーム上ではなくコンソール上で。)
多分説明不足なのでもうちょっと詳しく。
たとえば、
while ( i != 1 ){
j += 1;
}
の様な無限ループを設定したとして、
本来なら
if (j > 100 ){ break; }
とか、
while文の中に
scanf ( "%d" , &i );
等を入れて終了条件を満たさせるべきですが、
そうではなく、ひたすら無限ループを続けているところにEscキーを押すとループから脱出するようなプログラムを作ってみたいのです。
そういうプログラムは可能でしょうか?
どうかご教授下さい。
使用コンパイラ:Visual C++ 2008 Express Edition
No.2ベストアンサー
- 回答日時:
★アドバイス
・Windows OS で VC++ ならば kbhit() 関数が便利です。
使用例:
#include <conio.h>
// ESCのキーコード
#define ESC (0x1B)
int main( void )
{
while ( !kbhit() || (getch() != ESC) ){
:
無限ループ処理
:
}
return 0;
}
解説:
・kbhit()関数はキーバッファにキー情報があるかどうかを調査します。
これによりキーバッファがないときは while 文中が『真』となりループ。
・キーバッファがあるときは while 文中で getch() 関数より1文字取得。
ここで ESC キー以外なら無限ループ、ESC キーなら無限ループを抜けます。
・なお kbhit() 関数は非標準の関数です。
VC++なら conio.h ヘッダがあり利用できます。
No.1
- 回答日時:
別スレッドで入力を待つ
#include <windows.h>
#include <tchar.h>
#include <stdio.h>
#include <process.h>
#include <conio.h>
#include <intrin.h>
long esc;
void key (void *dummy)
{
while (1)
{
if (0x1b == _getch ())
{
_InterlockedIncrement (&esc);
break;
}
}
}
int _tmain (int argc, TCHAR **argv)
{
int j = 0;
_beginthread (key, 0, NULL);
while (1)
{
if (esc)
{
break;
}
printf ("%d\n", j++);
}
return 0;
}
とても早い解答ありがとうございます。
実行してみて、自分が考えていたような動作をしてくれました!
これを参考にプログラムを組んでみようと思います。
あと、これは多分マルチスレッドとか呼ばれるものの類ですよね?
(扱った事がないので詳しくは分かりませんが。)
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- その他(プログラミング・Web制作) uwscとWinShotを使いスクリーンショットを撮る 1 2022/06/30 21:15
- Java Java 南京錠 2 2023/02/04 11:46
- Visual Basic(VBA) 【VBA】印刷マクロのループ処理が反映されません 3 2022/08/09 02:15
- Windows 10 windows10のクリーンインストールが完了出来ない 2 2022/06/04 13:33
- C言語・C++・C# プログラムについて。 9 2023/07/22 00:09
- C言語・C++・C# TCP/IP通信時のサーバーからの受信 2 2022/11/23 09:11
- C言語・C++・C# C言語について 4 2022/07/02 01:08
- JavaScript カラーミーショップのsectionループ内で、[引数][戻り値]ありの関数的な処理を行いたいです。 1 2022/05/07 19:39
- C言語・C++・C# プログラムについて。 4 2023/07/20 15:46
- PHP 配列の値の更新方法について 1 2022/08/05 09:49
このQ&Aを見た人はこんなQ&Aも見ています
-
好きなおでんの具材ドラフト会議しましょう
肌寒くなってきて、温かい食べ物がおいしい季節になってきましたね。 みなさんはおでんの具材でひとつ選ぶなら何にしますか? 1番好きなおでんの具材を教えてください。
-
一回も披露したことのない豆知識
あなたの「一回も披露したことのない豆知識」を教えてください。 「そうなんだね」と「確かに披露する場所ないね」で評価します。
-
忘れられない激○○料理
これまでに食べたもののなかで、もっとも「激○○」だった料理を教えて下さい。 激辛、でも激甘でも。 激ウマ、でも激マズでも。
-
いけず言葉しりとり
はんなりと心にダメージを与える「いけず言葉」でしりとりをしましょう。 「あ」あら〜しゃれた服着てはりますな 遠くからでもわかりましたわ
-
うちのカレーにはこれが入ってる!って食材ありますか?
カレーって同じルーから作っても、家庭によって入っているものや味が微妙に違っていて面白いですよね! 「我が家のカレーにはこれが入ってるよ!」 という食材や調味料はありますか?
-
Enterキーを押されたら次の処理に移るという事をしたい。
C言語・C++・C#
-
Linuxで入力待ちなしkeyread関数のようなものはありますか?
C言語・C++・C#
-
ループの特定入力終了
C言語・C++・C#
-
-
4
fgetsなどのときのstdinのバッファを消すには?
C言語・C++・C#
-
5
キーボード入力によるループの終了
C言語・C++・C#
-
6
<unistd.h>をVisualStudioでつかえるようにする
C言語・C++・C#
-
7
あるキーを押したら強制終了させるには。
C言語・C++・C#
-
8
特定のキーを押すまでループさせるにはどうすればよいですか。
Visual Basic(VBA)
-
9
C++で空Enterの入力を判断したい!!
C言語・C++・C#
-
10
キーボードを押すまで処理を中断させる方法
C言語・C++・C#
-
11
数字以外が入力されたらエラー文を出したい。
C言語・C++・C#
-
12
VC++から引数付きexeファイルの実行
C言語・C++・C#
-
13
C言語のポインターに関する警告
C言語・C++・C#
-
14
コマンドラインに出力した文字を消すには
C言語・C++・C#
-
15
Linuxプログラミングで、キーボードの値がほしい
C言語・C++・C#
-
16
cout と cerrの違い
C言語・C++・C#
-
17
ボタンが押された時にループから抜けるには
C言語・C++・C#
-
18
無限ループを抜け出す方法を教えて下さい。
C言語・C++・C#
-
19
error LNK2001について
C言語・C++・C#
-
20
空ENTERの判別
C言語・C++・C#
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・【大喜利】【投稿~11/22】このサンタクロースは偽物だと気付いた理由とは?
- ・お風呂の温度、何℃にしてますか?
- ・とっておきの「まかない飯」を教えて下さい!
- ・2024年のうちにやっておきたいこと、ここで宣言しませんか?
- ・いけず言葉しりとり
- ・土曜の昼、学校帰りの昼メシの思い出
- ・忘れられない激○○料理
- ・あなたにとってのゴールデンタイムはいつですか?
- ・とっておきの「夜食」教えて下さい
- ・これまでで一番「情けなかったとき」はいつですか?
- ・プリン+醤油=ウニみたいな組み合わせメニューを教えて!
- ・タイムマシーンがあったら、過去と未来どちらに行く?
- ・遅刻の「言い訳」選手権
- ・好きな和訳タイトルを教えてください
- ・うちのカレーにはこれが入ってる!って食材ありますか?
- ・おすすめのモーニング・朝食メニューを教えて!
- ・「覚え間違い」を教えてください!
- ・とっておきの手土産を教えて
- ・「平成」を感じるもの
- ・秘密基地、どこに作った?
- ・【お題】NEW演歌
- ・カンパ〜イ!←最初の1杯目、なに頼む?
- ・一回も披露したことのない豆知識
- ・これ何て呼びますか
- ・初めて自分の家と他人の家が違う、と意識した時
- ・「これはヤバかったな」という遅刻エピソード
- ・これ何て呼びますか Part2
- ・許せない心理テスト
- ・この人頭いいなと思ったエピソード
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・好きなおでんの具材ドラフト会議しましょう
- ・餃子を食べるとき、何をつけますか?
- ・あなたの「必」の書き順を教えてください
- ・ギリギリ行けるお一人様のライン
- ・10代と話して驚いたこと
- ・大人になっても苦手な食べ物、ありますか?
- ・14歳の自分に衝撃の事実を告げてください
- ・家・車以外で、人生で一番奮発した買い物
- ・人生最悪の忘れ物
- ・あなたの習慣について教えてください!!
- ・都道府県穴埋めゲーム
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
フラッシュ暗算
-
UWSCにてある一定の動作を無限...
-
do-while文が禁止される理由
-
C言語 数字を削除する関数
-
入力した数値を倍々するプログラム
-
入力した文字列から母音だけを...
-
Excel VBAで年度をまたぐ期間の...
-
for文while文の無限ループの違...
-
C言語のプログラムみてください...
-
プログラミングC#初心者
-
猫でもわかる、がわかりません。
-
プログラムで関数は使わない方...
-
「指定されたキャストは有効で...
-
信頼区間の1.96や1.65ってどこ...
-
プログラムでの数字につく”f”の...
-
Enterキーを押されたら次の処理...
-
C言語での引数の省略方法
-
マイナスからプラスへ転じた時...
-
intとlongは同じ?
-
20'(角度)の計算がわかりま...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ループを途中で抜けたいのですが。
-
入力した文字列から母音だけを...
-
do-while文が禁止される理由
-
break文でループを一気に抜ける...
-
Excel VBAで年度をまたぐ期間の...
-
エクセルVBAで Do While (1)って?
-
入力した数値を倍々するプログラム
-
For文の終了値を関数にしても問...
-
UWSCにてある一定の動作を無限...
-
C言語forループが完結した場合...
-
n重のfor文にするには?
-
for文while文の無限ループの違...
-
Delphiで・・・
-
Cプログラムが終了しない
-
strstr()関数の実装内容について。
-
PAD図の書き方
-
__asm int 3でのブレイクポイン...
-
PIC のプログラムについて ど...
-
放電現象の2分法C言語プログラ...
-
線形探索(番兵法)のプログラ...
おすすめ情報