/* List13-4のプログラムに、現在の"気分"を表す文字列を 追加したプログラムを作成せよ。すなわち、 前回の時刻(と前回の気分)を表示した後に、 『現在の気分は:』を入力を促してキーボードから文字列を読み込んで、 ファイルに書き込む。たとえば、"最高!!"と入力した場合、 次回に実行したときは、『前回は9999年99月99日99時99分99秒で、 気分は最高!!でした。』と表示すること。 */ #include #include char data_file[] = "datetime.dat"; /* ファイル名 */ /*--- 前回の日付・時刻・気分を取得・表示 ---*/ void get_data(void) { FILE *fp; int y, mo, d, h, m, s; char feel[64]; if((fp = fopen(data_file, "r")) == NULL) puts("本プログラムを実行するのは初めてですね。"); else { fscanf(fp, "%d%d%d%d%d%d%s", &y, &mo, &d, &h, &m, &s, feel); printf("前回は%4d年%02d月%02d日%02d時%02d分%02d秒で、" "気分は%sでした。\n", y, mo, d, h, m, s, feel); fclose(fp); } } /*--- 今回の日付・時刻・気分を書き込む ---*/ void put_data(void) { FILE *fp; time_t t; struct tm *local; char feel[64] = "普通"; time(&t); local = localtime(&t); if((fp = fopen(data_file, "w")) == NULL) puts("\aファイルをオープン出来ません。"); else { printf("現在の気分は:"); scanf("%s", feel); fprintf(fp, "%d %d %d %d %d %d %s\n", local->tm_year + 1900, local->tm_mon + 1, local->tm_mday, local->tm_hour, local->tm_min, local->tm_sec, feel); fclose(fp); } } int main(void) { get_data(); put_data(); return 0; }