サンプル4

次の段階として、時間関係の標準ライブラリ関数time.hを用いて制限時間をつけたプログラムsample4を作りたいと思います。

今回は、time.hの中から、

time_t
;カレンダー時間を秒単位で表した型です。
time(time_t *timer);標準時間の1970年1月1日0時0分0秒からの、 経過時間を秒で返す関数です。

を使います。
以下の例のように用いて、サンプルを改良していきましょう。

/*例題*/
#include<time.h>

int main(){
time_t t1;//t1を時間を表す型として定義
time(&t1);//t1に現在の時間を格納
printf("%d",t1);//格納している時間を表示
}

sample4のダウンロード(右クリック後、名前をつけて保存をクリック)

/* sample4 */
#include <stdio.h>
#include <string.h>
#include<time.h>

#define tup 5 //制限時間デフォルト5秒

int main()
{
time_t s_time,e_time,n_time;
int yn;
int point=0;
char *qstr = "Hello";
char *estr[100];

while(1){
printf("それではタイピングを始めますか?制限時間は5秒です。[0]yes [1]no\n");
scanf("%d",&yn);
if (yn != 0){
return 0;
}else{
printf("下に表示されるC言語のキーワードを打ってください\n");
time(&s_time);//s_timeに開始時間を格納
e_time = s_time + tup;
time(&n_time);//s_timeに現在の時間を格納

while((strcmp(qstr,estr) != 0) & (e_time >= n_time)){
printf("%s\n",qstr);
scanf("%s",estr);

if (strcmp(qstr,estr) == 0){
printf("正解\n");
point++;
}else{
printf("違うよ\n");
time(&n_time);
if(e_time >= n_time)
printf("残り時間%d秒\n",e_time - n_time);
}
}

printf("正解数は%d問です。\n",point);
printf("リトライ? [0]yes [1]no ");
scanf("%d",&yn);
if (yn == 1)
return 0;
}
}
return 0;
}