プログラム実行開始から一定時間に入力された文字数なり行数なりをカウントさせたいのですが、
以下の書き方では、まったくキーをさわらなければ永遠にプログラムが終了しません。
どうすれば、一定時間後にループを抜けれるのでしょうか?
#include <stdio.h>
#include <time.h>
int main(){
int count;
char line_buf[1024];
count = 0;
while (fgets(line_buf, 1024, stdin) != NULL && (clock()/CLOCKS_PER_SEC) < 20){
fputs(line_buf, stdout);
count++;
}
printf("%d\n",count);
}
一定時間経過後にループを終了させたいのですが
- Dixq (管理人)
- 管理人
- 記事: 1662
- 登録日時: 15年前
- 住所: 北海道札幌市
- 連絡を取る:
Re: 一定時間経過後にループを終了させたいのですが
環境が解りませんが、windowsであればこんなのどうでしょう。
2秒経過するか、Escが入力されると終了します。
それまでは延々と"*"を出力します。
また、ソースコードを投稿される際はcodeタグをお使いください。
詳しくはフォーラムルールに書いております。
#include <stdio.h>
#include <conio.h>
#include <windows.h>
#include <time.h>
int main(){
clock_t t=clock();
while ( clock()-t<2000 ){
if( kbhit() ){
if( getch() == 0x1b ){
break;
}
}
printf("*");
Sleep(30);
}
printf("end\n");
return 0;
}
それまでは延々と"*"を出力します。
また、ソースコードを投稿される際はcodeタグをお使いください。
詳しくはフォーラムルールに書いております。
- softya(ソフト屋)
- 副管理人
- 記事: 11677
- 登録日時: 15年前
- 住所: 東海地方
- 連絡を取る:
Re: 一定時間経過後にループを終了させたいのですが
C言語の標準関数だけでは難しいかと思います。
WindowsならWin32APIやconio.hの関数などを使うことが必要になります。
WindowsならWin32APIやconio.hの関数などを使うことが必要になります。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。