为什么这个程序向文件以二进制写入当前时间之后读取文件中的时间发生错误
答案:1 悬赏:0
解决时间 2021-02-27 21:20
- 提问者网友:末路
- 2021-02-27 15:46
为什么这个程序向文件以二进制写入当前时间之后读取文件中的时间发生错误
最佳答案
- 二级知识专家网友:枭雄戏美人
- 2021-02-27 16:16
get_data函数里的times是个野指针,要给它分配空间才行:
void get_data(void)
{
FILE *fp;
if((fp = fopen("data.bin", "rb")) == NULL)
printf("本程序第一次运行。
");
else {
struct tm *times=(struct tm*)malloc(sizeof(struct tm)); //要给times分配空间
fread(times, sizeof(int), 10, fp);
printf("上一次运行是在%d年%d月%d日%d时%d分%d秒。
",
times->tm_year + 1900, times->tm_mon + 1, times->tm_mday,
times->tm_hour, times->tm_min, times->tm_sec);
fclose(fp);
free(times); //释放times
}
}函数malloc在头文件malloc.h里声明,开头加一句#include
追问:可以了,也就算说,一开始我定义的指针没有指向任何方向,但是能不能解释一下 (struct tm*)malloc(sizeof(struct tm)); 是什么意思, malloc这个我现在的教材里面没有讲到,所以不了解为什么这样做就算分配空间
void get_data(void)
{
FILE *fp;
if((fp = fopen("data.bin", "rb")) == NULL)
printf("本程序第一次运行。
");
else {
struct tm *times=(struct tm*)malloc(sizeof(struct tm)); //要给times分配空间
fread(times, sizeof(int), 10, fp);
printf("上一次运行是在%d年%d月%d日%d时%d分%d秒。
",
times->tm_year + 1900, times->tm_mon + 1, times->tm_mday,
times->tm_hour, times->tm_min, times->tm_sec);
fclose(fp);
free(times); //释放times
}
}函数malloc在头文件malloc.h里声明,开头加一句#include
追问:可以了,也就算说,一开始我定义的指针没有指向任何方向,但是能不能解释一下 (struct tm*)malloc(sizeof(struct tm)); 是什么意思, malloc这个我现在的教材里面没有讲到,所以不了解为什么这样做就算分配空间
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯
• 手机登qq时,显示手机磁盘不足,清理后重新登 |
• 刺客的套装怎么选啊? |