运行后几秒显示运行结束,没有输出任何东西。
自我排查问题后,应该出在//读取上次运行时间else部分的fread或者printf。
/*
明解C语言练习13-12,将日期和时间作为struct tm型的值直接向二进制文件进行读写。
*/
#include<stdio.h>
#include<time.h>
int main()
{
FILE *fp;
time_t current=time(NULL); //得到当前时间
struct tm *timer = localtime(¤t); //得到分解时间 *timer ,timer为指向其的指针
//读取上次运行时间 (问题在else部分)
if( (fp=fopen("time.bin","rb"))==NULL )
printf("打开文件失败/第一次打开。\n");
else
{
struct tm *timn;//定义一个struct tm型指针变量timn用于储存读取的上次运行时间
fread(&timn,sizeof(struct tm),1,fp) ;
printf("读取成功。\n");
// /*应该是上面的读取fread 或者下面的输出 printf 出问题了。*/ //
printf("上一次运行时间:%d年%d月%d日%d时%d分%d秒\n",timn->tm_year+1900,timn->tm_mon+1
,timn->tm_mday,timn->tm_hour,timn->tm_min,timn->tm_sec) ;
fclose(fp);
}
// 下面向文件输入 本次运行时间。
if( (fp=fopen("time.bin","wb"))==NULL )
printf("打开文件失败了。\n");
else //写入当前时间,struct tm型二进制。
{
fwrite(timer,sizeof(struct tm),1,fp) ;
printf("写入成功!\n") ;
fclose(fp) ;
}
//显示本次运行时间。
if( (fp=fopen("time.bin","rb"))==NULL )
printf("打开文件失败了。\n");
else
{
fread(timer,sizeof(struct tm),1,fp) ;
printf("本次运行时间:%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);
}
return 0;
}