CLKAB 2016-09-02 06:49 采纳率: 0%
浏览 3360
已结题

将txt文件中的内容输入到结构体中

一运行就闪退,调试的数据都是乱的,小白也不知道哪里错了,求大神看看
#include
#include
#include
struct bookinf
{
int ID;
char bookname[20];
char writer[20];
char company[20];
int year;
int month;
int price;
} ;
typedef struct bookinf bookinf;
int main()
{
int i,num=0;
FILE *fp;
struct bookinf b[100];
struct bookinf tmpData;
fp = fopen("D:\book.txt", "r"); // 打开文件
char buf[1000];

if (!fp) // 判断是否打开成功
{
perror("读取文件失败");
return;
}
while (fgets(buf, 1000, fp)) // fgets循环读取,直到文件最后,才会返回NULL
num++; // 累计行数
fclose(fp);
fp = fopen("D:\book.txt", "r"); // 打开文件
if(fp==NULL)
{
perror("读取文件失败");
return;
}
memset(b,0X0,sizeof(b));
while (fp)
{
fread(&tmpData,sizeof(struct bookinf),1,fp);
if(ferror(fp))
{
fclose(fp);
perror("读文件失败");

}
if(feof(fp))
{
break;
}
b[i]=tmpData;
i++;
}
fclose(fp);
for(i=0;i<6;i++)
{
printf("序号:%d,书名:%s,作者:%s,出版社:%s,日期:%d年%d月,价格:%d",b[i].ID,b[i].bookname,b[i].writer,b[i].company,b[i].year,b[i].month,b[i].price);
}
return 0;
}

  • 写回答

9条回答 默认 最新

  • AlbertS 博客专家认证 2016-09-02 07:08
    关注

    fread(&tmpData,sizeof(struct bookinf),1,fp);
    你这个读入完全没有根据啊,你需要一项一项的读入

    评论

报告相同问题?

悬赏问题

  • ¥15 matlab求解平差
  • ¥15 电脑桌面设定一个区域禁止鼠标操作
  • ¥15 求NPF226060磁芯的详细资料
  • ¥15 使用R语言marginaleffects包进行边际效应图绘制
  • ¥20 usb设备兼容性问题
  • ¥15 错误(10048): “调用exui内部功能”库命令的参数“参数4”不能接受空数据。怎么解决啊
  • ¥15 安装svn网络有问题怎么办
  • ¥15 vue2登录调用后端接口如何实现
  • ¥65 永磁型步进电机PID算法
  • ¥15 sqlite 附加(attach database)加密数据库时,返回26是什么原因呢?