• ベストアンサー

キーボード入力によるループの終了

C言語で、キーボードから何も入力が無い場合は、同じ処理を一定の時間で続けていき、キーボードから入力(例えばスペースを入力)があった場合のみ、ループを抜ける(処理を終了する)というプログラムを組みたいと思っているのですが、どのようなソース文にすればよいでしょうか。 どなたかよろしくお願いします。

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

  • ベストアンサー
  • kmee
  • ベストアンサー率55% (1857/3366)
回答No.1

そのような、入力待ちにならないキー入力の方法は、処理系によって異なります。 MS-DOS系のconio.h、 unix系ならcursesライブラリでしょうか。 GUI用だとキー入力イベント等を使用することになるでしょう。 構造は極普通に、whileの継続条件を「キー入力が無かったら」とするか、無限ループ中で「キー入力があったらbreak;」とするかでしょう。

takshimizu
質問者

お礼

whileで処理を回して、knhitでbreakするように書いたら出来ました。 ご回答いただきありがとうございました。

関連するQ&A

  • キーボード入力の終了につきまして(ループ処理内)

    いつも参考にさせて頂いております佐藤と申します。 JAVA言語を勉強し初めて数ヶ月程度ですが、楽しさが分かって参りました。 質問させて頂きたい内容は、ループ処理(キーボードや入力ファイルがNULLになるまで繰り返す)でのキーボード入力をどうすれば終了させられるかです。 //読込チェック=NULLならば処理を終了させる while((check = buf.readLine())!=null){ char[] src = check.toCharArray(); ソースの一部ですが、これでは入力ファイルがNULLになれば終了出来ますが、キーボードからの入力だとNULL(何も入力せずにエンター)でも終了しません。 原因が分かる方はいらっしゃいますでしょうか? 宜しくお願い致します。

  • ループの特定入力終了

    C言語初心者です。よろしくお願いします。 whileなどのループ関数を使って、キーボード 入力をするたびに、ループが一度走る事は、 可能です。ですが、 常にループは走らせながらendなどの特定 の入力をされた場合に、ループを抜ける プログラムをどうしてもできません。 わかる方、教えていただければ幸いです。

  • C言語のプログラムの質問です

    C言語で負の値が入力されたときに処理を終了する条件でキーボードから繰り返し入力するためにはどのようなプログラムにしたらいいですか? (FOR文を使い、FOR文の繰り返し条件を入れないで繰り返す)

  • 永久ループ・・・

    どうも、最近C言語の勉強を始めた超初心者です。 int main(void) { int i; for(;;){ printf("桁数を入力してください。:"); scanf("%d",&i); if(i<=12) break; else puts("もう一度入力してください。"); continue; } return(0); } 上のソース、i<=12の条件を満たさなければループを繰り返すというプログラムなんですけど、数値を入力した場合は思った通りに挙動するのですが、文字や文字列を入力すると永久ループになります。scanf関数で返値を受け取って判定するなどいろいろ試したのですが、どうしても永久ループになってしまいます。 どうしてか教えてください。お願いします。

  • キーボードに入力させるには・・・・

    VBでキーボード入力を自動でしてもらうプログラムを作りたいのですが、参考にしたいのですごく簡単な ソースを書いてもらえないでしょうか?たとえば一秒間「a」と入力させるプログラムなど・・・・ 知識の深い方よろしくお願いしますm(__)m

  • ループについて

     アンケート的な質問ですが、forの無限ループと、whileの無限ループが、C言語にはありますよね?  whileの場合は、while(1)と書きますし、問題ないですが、 forの場合は、for(;;)とかきますよね。  forの無限ループって、顔文字の涙にみえないですか? for文の無限ループって、何が悲しかったのでしょうか? 答えられる方、こたえてください。

  • 【C言語初心者です】制御文をループに関して

    C言語習いたての者です。どうぞよろしくお願いします。 1~20の範囲内で数値を5回入力させ、入力順に画面に出力するプログラムを作りたいと思っています。 この中で、範囲外の数値か、入力済みの数値が入力された場合に、 それに応じたエラーメッセージを表示させ、再入力を要求する仕組みを 加えようと思い、 制御文を用いてどういうループにすればいいか考えているのですが、 思うような結果が返ってきません。 今まで私が考えていたループの構造としては、 int count = 0;<<ループ用カウンター宣言・初期化>> if(<<入力された数値が指定範囲内の時>>) { _ for(<<countが範囲内かどうか>>) _ { __ if(<<入力された数値が入力済みではない時>>) __ { ___ break;<<ループ終了。次の数値入力>> __ } __ <<数値重複用エラーメッセージ出力>> _ } _ break;<<ループ終了。次の数値入力>> } <<範囲外数値用エラーメッセージ出力>> 条件としては、 ・配列と制御文を用いる ・標準ヘッダファイルは<stdio.h>のみを用いる 上記のループをどう修正したらいいか、を教えていただけるとうれしいです。

  • キーボードの入力としてOSに渡すプログラム

    キーボードの入力としてOSに渡すプログラムを作りたいんですが、どうすればいいでしょうか? 具体的には メモ帳などに入力のカーソルを出してる状態で、 プログラムを起動するとプログラムであらかじめ指定しておいたキーが押されたものとしてメモ帳に入力されるようなプログラムなのですがどうやればいいでしょうか? 自動入力といった感じのものなのですが。 C言語でコンソールアプリあたりで作ろうと思っているのですが使用できる関数やアルゴリズムなど教えてください。

  • 処理KEY入力で終了させる方法

    今、学習でC言語を使いCPUのアドレスのデータを表示させるプログラムを組んでいます。 表示させるのは出来たのですが、表示させるたびに、プログラムが終わってしまうので、何回も入力するのがわずらわしい状態です。 例えば、連続でデータが半永久的に表示され、何かKEYを押すだけでそのデータ表示を強制終了 させることは可能でしょうか? ソースは、簡単なのですが、 #include<stdio.h> #define Dout 0x03ff int main { int i; DATA=inp(Dout); printf("DATA:%d\n",DATA); return(0); } while(1)で、無限ループをし、CTRL+Cなどで、抜ける方法はあると思うのですが、それ以外の方法で、プログラムを組むことは可能でしょうか?

  • 配列を使わずに、変数名を動的にループで回したい

    配列を使わずに、変数名を動的にループで回したい 大学の課題をやっている途中に思ったことなのですが……。 プログラム中に同じ型の変数p1,p2,p3があり、それぞれの変数にループで同じ処理を施したいと思っています。 しかし、「p(i)」や「("p" + i)」などと、変数どうしを別のものとして認識させようとしても、コンパイラから警告が出て上手くいきません。 配列を使えば、このような処理が出来ることはわかるのですが、使う変数名を指定されてしまっているために、今回は配列を使えません。 出来るか出来ないか、出来る場合は方法を知りたいです。 後、今回はC言語のプログラムで利用出来るかが自分にとっての問題なのですが、C言語以外のこのプログラミング言語なら出来る、とかの情報もこの機会に知りたいです。 お答え出来る範囲でいいので、もしよければ回答お願いします。