質問
日付・時刻をstruct tm型の値として直接バイナリファイルに読み書きするようなプログラムを書きたいです。エラーは出ませんが実行がうまくできません。fwrite,fread関数の書き方が正しくないためこのような結果になっていると考えていますが、具体的にどこが間違っているか解説していただくと有難いです。また、fprintf,fscanf関数を用いればプログラムを書くことができるのですがバイナリファイルの読み書きにfprintf,fscanf関数を用いてもいいのでしょうか?
該当のソースコード
c
1#include<stdio.h> 2#include<time.h> 3char date_file[]="a.out"; 4void get_dat(void){ 5 FILE *fp; 6 if((fp=fopen(date_file,"rb"))==NULL) 7 printf("本プログラムを実行するのは初めてですね\n"); 8 else{ 9 struct tm *time1; 10 fread(time1,sizeof(struct tm),1,fp); 11 printf("前回は%d年%d月%d日%d時%d分%d秒でした。\n",time1->tm_year,time1->tm_mon,time1->tm_mday,time1->tm_hour,time1->tm_min,time1->tm_sec); 12 fclose(fp); 13 } 14} 15void put_date(void){ 16 FILE *fp; 17 time_t current=time(NULL); 18 struct tm *timer=localtime(¤t); 19 if((fp=fopen(date_file,"wb"))==NULL) 20 printf("ファイルをオープンできません\n"); 21else{ 22 fwrite(timer,sizeof(struct tm),1,fp); 23 fclose(fp); 24} 25} 26int main(void){ 27 get_dat(); 28 put_date(); 29 return 0; 30}
回答3件
あなたの回答
tips
プレビュー