WDGW 2019-11-27 15:27 采纳率: 0%
浏览 287

写图书管理系统,用了链表与文件,可是初始用fscanf把东西从文件导入链表总是出错,各位哥哥姐姐帮帮忙忙吧

就是这个部分,一运行到这里系统就奔溃了
//初始化书籍链表
book_info* Init_Book(book Lb)
{
int i=0;
Lb = (book_info*)malloc(sizeof(book_info));
book f = (book_info*)malloc(sizeof(book_info));
book b = (book_info*)malloc(sizeof(book_info));
if( Lb == NULL || b == NULL || f == NULL){
printf("error!\n");
return NULL;
}
FILE *fp;
fp=fopen("library","r");
if(fp==NULL)
{
printf("error!");

}
rewind(fp);
while(!feof(fp))
{
    if(i=0)
    {
        b->next = NULL;
        Lb->next = b;
        f = b;
        fscanf(fp,"%s %s %s %s %s %f %d %d",&b->book_num,&b->book_name,&b->book_author,&b->book_field,&b->book_publisher,&b->book_price,&b->book_index,&b->book_index2);        
    }
    i++;
    b = (book_info*)malloc(sizeof(book_info));
    if(b == NULL)
    {
    printf("error!\n");
    return NULL;
    }
    b->next = NULL;
    f->next = b;
    f = b;       
    fscanf(fp,"%s %s %s %s %s %f %d %d",&b->book_num,&b->book_name,&b->book_author,&b->book_field,&b->book_publisher,&b->book_price,&b->book_index,&b->book_index2);    
}
fclose(fp);

return Lb;

}

这是一开始用来保存的han'shu
void save_book( book Lb )
{

book b=Lb;
FILE *fp;
fp=fopen("library","wb");
if(fp==NULL)
{
    printf("error!");

}

while(b->next!=NULL)
{
    b=b->next;
    fprintf(fp,"%s %s %s %s %s %f %d %d",b->book_num,b->book_name,b->book_author,b->book_field,b->book_publisher,b->book_price,b->book_index,b->book_index2);

    printf("HH");
}

fclose(fp);

}

  • 写回答

1条回答 默认 最新

  • chenxizhan1995 2019-11-28 02:07
    关注

    出什么错了,是导入结果不对还是程序崩溃?

    把结构体声明也贴出来看看。

    有可能是写入的字符串本身含有空格,导致读取的时候对应关系错乱了。

    评论

报告相同问题?

悬赏问题

  • ¥15 如何在scanpy上做差异基因和通路富集?
  • ¥20 关于#硬件工程#的问题,请各位专家解答!
  • ¥15 关于#matlab#的问题:期望的系统闭环传递函数为G(s)=wn^2/s^2+2¢wn+wn^2阻尼系数¢=0.707,使系统具有较小的超调量
  • ¥15 FLUENT如何实现在堆积颗粒的上表面加载高斯热源
  • ¥30 截图中的mathematics程序转换成matlab
  • ¥15 动力学代码报错,维度不匹配
  • ¥15 Power query添加列问题
  • ¥50 Kubernetes&Fission&Eleasticsearch
  • ¥15 報錯:Person is not mapped,如何解決?
  • ¥15 c++头文件不能识别CDialog