プログラミングの課題について

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
yunon

プログラミングの課題について

#1

投稿記事 by yunon » 7年前

C言語でのファイル処理に関して分からない課題があります。
ご教授頂けると幸いです。

<課題>
キーボードから何かキーが押されるごとに、現在の時刻を取得し1行ごとにファイルに記録していく。
5回記録したら一旦ファイルを閉じ、再び開いて1回ごとの時刻の差をファイルから読み取った値で平均を計算するプログラムを作成せよ。

・ファイルには年・月・日・自・分・秒をすべて一行で書き込むこと
・平均の時間は浮動小数点で算出すること。

以下のように作成したのですが、時刻がすべて同じになってしまいます。
プログラムをどのように修正したらよいでしょうか・・。
よろしくお願いいたします。

コード:

 
#define _CRT_SECURE_NO_WARNINGS
#include<time.h>
#include<stdio.h>
#include<conio.h>


char data_file[] = "datetime.dat";


void make_file(void)
{
	FILE *fp;

	if ((fp = fopen(data_file, "w")) == NULL)
		printf("\aファイルをオープンできません。\n");
	else {
		
		fclose(fp);


	}
}

void get_data(void)
{
	FILE *fp;

	if ((fp = fopen(data_file, "r")) == NULL)
		printf("本プログラムを実行するのは初めてですね。\n");
	else {
		int year, month, day, h, m, s;

		fscanf(fp, "%d%d%d%d%d%d", &year, &month, &day, &h, &m, &s);
		printf("前回は%d年%d月%d日%d時%d分%d秒でした。\n", year, month, day, h, m, s);

		fclose(fp);
	}

}

void put_data(void)
{
	FILE *fp;
	time_t current = time(NULL);
	struct tm *timer = localtime(&current);


	if ((fp = fopen(data_file, "w")) == NULL)
		printf("\aファイルをオープンできません。\n");
	else {
		fprintf(fp, "%d %d %d %d %d %d\n", timer->tm_year + 1900, timer->tm_mon + 1, timer->tm_mday, timer->tm_hour, timer->tm_min, timer->tm_sec);

		fclose(fp);

	}
}


int main(void) {

	make_file();

		if (_getch())
			get_data();
		if (_getch())
			get_data();
		if (_getch())
			get_data();
		if (_getch())
			get_data();
		if (_getch())
			get_data();

	put_data();
}
 

“C言語何でも質問掲示板” へ戻る