无法用 fread 正确读取 定义的struct tm 型指针变量timn所指的内容,并输出。

运行后几秒显示运行结束,没有输出任何东西。
自我排查问题后,应该出在//读取上次运行时间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(&current);    //得到分解时间 *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;
} 


 struct tm *timn;//定义一个struct tm型指针变量timn用于储存读取的上次运行时间 
        fread(&timn,sizeof(struct tm),1,fp);
改为
 struct tm timn;//定义一个struct tm型指针变量timn用于储存读取的上次运行时间 
        fread(&timn,sizeof(struct tm),1,fp);

这道练习题我在网上搜了好多,,, 都是略过这道题了,答案:“暂时不会” 。尬住了。