時刻取得について
C言語において時刻取得を以下のようにプログラムしたら、プログラムを3回目以上実行すると前回時間内容が常に1回目が表示されてしまいます。どこを直せばちゃんと前回の時刻が正しく表示されるようになるのでしょうか。put()のfopenの"a"の部分は"w"に変えるだけで正しく実行されるのですが、これを"a"にした場合について正しく表示されるようにするということです。
#include <time.h>
#include <stdio.h>
void get(void);
void put(void);
char data_file[] = "time.dat";
int main(void)
{
get();
put();
return(0);
}
/* 前回の日付・時刻を読込む */
void get(void)
{
FILE *fp;
time_t t;
struct tm *local;
time(&t);
local = localtime(&t);
if ((fp = fopen(data_file, "r")) == NULL){
printf("\a本プログラムを実行するのは初めて\n");
}else {
int year, month, day, h, m, s;
fscanf(fp, "%d %d %d", &h, &m, &s);
printf("前回は%d時%d分%d秒\n", h, m, s);
fclose(fp);
}
}
/* 今回の日付・時刻を書き込む */
void put(void)
{
FILE *fp;
time_t t;
struct tm *local;
time(&t);
local = localtime(&t);
if ((fp = fopen(data_file, "a")) == NULL)
printf("\aファイルをオープンできません。\n");
else {
printf("現在の日付・時刻を書き出しました。\n");
fprintf(fp, "%d %d %d\n",
local->tm_hour, local->tm_min, local->tm_sec );
fclose(fp);
}
}
お礼
わかりました、助かりました。 お礼が遅くなってしまいましたが回答ありがとうございました。