sscanf读取出错

wyb201 2011-04-19 08:08:24
这是一个读取文件数据的程序,将结果存在一个结构体中
文件结构为:
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);
}
...全文
202 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
wyb201 2011-04-19
  • 打赏
  • 举报
回复
找到问题了
timetable_info[i].sta_name=(char (*)[10])malloc(sizeof(char )*timetable_info[i].timetable_line_num);
这句出问题
改成
timetable_info[i].sta_name=(char (*)[10])malloc(10*timetable_info[i].timetable_line_num);

就好了
huofen2005 2011-04-19
  • 打赏
  • 举报
回复
8192字节而已,直接数组搞定,不需要malloc申请~
huofen2005 2011-04-19
  • 打赏
  • 举报
回复
需要判断fgets的吧返回的吧?
估计最后一次 fgets(buffer,8192,fp),缓冲区里面是EOF吧?
debug跟下就出来了~
书虫 2011-04-19
  • 打赏
  • 举报
回复

帮你顶下吧!

69,370

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧