ページ 11

標準入力関数の事を教えてください

Posted: 2007年1月30日(火) 12:11
by ヒロ
毎日質問ばっかりですみません。
gets関数のような標準入力関数で、
一定時間入力が無ければ入力待ちを解除して先に進む様な関数ありませんか?
それか無限ループ中に入力があれば抜けるような関数が必要なんですが・・・

Re:標準入力関数の事を教えてください

Posted: 2007年1月30日(火) 12:40
by 管理人
リアルタイムに入力状態を監視したいのなら
処理系に依存したものを使うしか無いと思います。
MS-DOS なら getch関数です。(後のは知りません;)
getch関数でしたら
http://www.matx.org/REFS/node84.htm

この辺に参考になるサイトがあります。

しかしgetcharにしてもgetchにしても文字が入力されるまで入力待ち状態になってしまう事は避けられないので、リアルタイム入力は出来ません。
したがってこの関数だけでは時間による分岐が出来ないので
kbhitと一緒に使ってみてはどうでしょう。
この関数は入力があるかを調べる関数で、入力があったときに1を返すものです。
したがって、この関数を呼んだ返り値が1の時、getchを呼んでやればいいのではないでしょうか

while(1){
  if (kbhit()){
    c = getch();
    //cを使って処理分岐
  }
  if(規定時間以上か?)
    break;
}

こんな感じに出来るように思います。(やったことないので、想像ですが^^;)

こちらも参考に
http://www.matx.org/REFS/node109.htm

Re:標準入力関数の事を教えてください

Posted: 2007年1月30日(火) 12:40
by バグ
標準入力関数かどうかはわかりませんが、kbhit関数が使えるのではないでしょうか?
kbhit関数はキーボードの入力があった時には1を、そうでない場合は0を返す関数です。

時間を見るのは自作タイマーを作ってみてはいかがでしょう?
例えば、計測開始時間から指定した時間を過ぎたら1、時間内であれば0を返す関数とか…
仮にこの関数をMesTime()とでも名付けると…
int nKey;

while( !MesTime() )
{
    if( !kbhit() )
    {
        continue;
    }
    else
    {
        nKey = getch();
        break;
    }
}

こんな感じでしょうか?

Re:標準入力関数の事を教えてください

Posted: 2007年1月30日(火) 12:42
by 管理人
バグさんの方がキレイですね^^;

Re:標準入力関数の事を教えてください

Posted: 2007年1月30日(火) 12:43
by バグ
うわ、管理人さんと思いっきり被ってしまいましたね(笑)

ちなみにWindowsのコンソールアプリならば、私が作成したカラードロップ2のMAIN.cppとTIMER.cpp辺りを見てもらえれば、参考になるかもしれません…環境依存しまくりですが(苦笑)

Re:標準入力関数の事を教えてください

Posted: 2007年1月30日(火) 13:46
by ヒロ
管理人さん、バグさんありがとうございました!

このプログラムをLinux上で動かさなくてはならなくて・・・
kbhit関数と同じような機能でLinuxで動く関数はありませんか?
ANSIとの互換性のある関数じゃなきゃ使えないようなんですが・・・

何度もすみません!

ちなみに管理人さんのコードも素人の私からみたら綺麗にまとめられてますよ☆

Re:標準入力関数の事を教えてください

Posted: 2007年1月30日(火) 14:59
by 管理人
Linuxではやったことないのでわかりませんが

http://72.14.235.104/search?q=cache:eGl ... =clnk&cd=1

この辺参考にならないでしょうか?

Re:標準入力関数の事を教えてください

Posted: 2007年1月30日(火) 14:59
by keichan
>一定時間入力が無ければ入力待ちを解除して先に進む様な関数ありませんか?
C標準ライブラリにはご期待に添えるような関数はございません。

"kbhit linux"でググったらどんぴしゃな回答がありましたよ。
http://willow.mech.hirosaki-u.ac.jp/How ... kbhit.html
最低限ご自分で調べられる事は調べてから質問していただけるとありがたいです。

Re:標準入力関数の事を教えてください

Posted: 2007年1月30日(火) 15:05
by ヒロ
keichanさんありがとうございました。

一応ググったんですけど・・・このサイトは出てこなかったです(^^;)
助かりました!ありがとうございました!

ちなみにこうゆうのはどのエンジンで検索すればいいんですかね?

Re:標準入力関数の事を教えてください

Posted: 2007年1月30日(火) 15:12
by keichan
>ちなみにこうゆうのはどのエンジンで検索すればいいんですかね?
私は google でしか検索をしません。
google で発見できなければ、書籍に頼りに行きます。

Re:標準入力関数の事を教えてください

Posted: 2007年1月30日(火) 15:19
by ヒロ
なるほど。
自分はyahooで検索していたせいかもしれませんね・・・
本当にありがとうございました!