这是一个读取文件数据的程序,将结果存在一个结构体中
文件结构为:
781
4:52:07 车厂
4:52:50 小
4:57:24 小
5:00:04 门
5:00:39 安是门
5:03:16 中一
5:04:01 华门
......
其中781为这个文件总共的行数,请问程序为什么报错?
数据都读进去了,但总是读完最后一行出错
请帮忙看看原因
#include<stdio.h>
#include<stdlib.h>
#include<direct.h>
#include<string.h>
int i,j;//全局变量,用来循环
struct timetable
{
int timetable_line_num;
int *hour;
int *minute;
int *second;
char (*sta_name)[10];
};
void read_timetable(struct timetable *timetable_info,int timetable_num)
{
FILE *fp;
char *buffer;
buffer=(char*)malloc(8192*sizeof(char));
if((fp=fopen("time1.data","r"))==NULL)
{
printf("Timetable file open wrong\n");
exit(0);
}
for(i=0;i<timetable_num;i++)
{
fgets(buffer,8192,fp);
sscanf(buffer,"%d",&timetable_info[i].timetable_line_num);
timetable_info[i].hour=(int *)malloc(sizeof(int)*timetable_info[i].timetable_line_num);
timetable_info[i].minute=(int *)malloc(sizeof(int)*timetable_info[i].timetable_line_num);
timetable_info[i].second=(int *)malloc(sizeof(int)*timetable_info[i].timetable_line_num);
timetable_info[i].sta_name=(char (*)[10])malloc(sizeof(char )*timetable_info[i].timetable_line_num);
for(j=0;j<timetable_info[i].timetable_line_num;j++)
{
fgets(buffer,8192,fp);
sscanf(buffer,"%d:%d:%d %s\n",&timetable_info[i].hour[j],&timetable_info[i].minute[j],&timetable_info[i].second[j],&timetable_info[i].sta_name[j]);
printf("%d %s\n",j,timetable_info[i].sta_name[j]);
}
}
fclose(fp);
free(buffer);
}
void main()
{
struct timetable timetable_info[1];
read_timetable(timetable_info,1);
}