_茶凉_ 2021-07-30 13:25 采纳率: 100%
浏览 36
已结题

无法用 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;
} 


  • 写回答

2条回答 默认 最新

  • 快乐鹦鹉 2021-07-30 13:40
    关注
     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);
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 8月7日
  • 已采纳回答 7月30日
  • 创建了问题 7月30日

悬赏问题

  • ¥200 总是报错,能帮助用python实现程序实现高斯正反算吗?有偿
  • ¥15 对于squad数据集的基于bert模型的微调
  • ¥15 为什么我运行这个网络会出现以下报错?CRNN神经网络
  • ¥20 steam下载游戏占用内存
  • ¥15 CST保存项目时失败
  • ¥15 树莓派5怎么用camera module 3啊
  • ¥20 java在应用程序里获取不到扬声器设备
  • ¥15 echarts动画效果的问题,请帮我添加一个动画。不要机器人回答。
  • ¥15 Attention is all you need 的代码运行
  • ¥15 一个服务器已经有一个系统了如果用usb再装一个系统,原来的系统会被覆盖掉吗