LEoe_
leoe_
采纳率100%
2016-04-13 03:58

c++读取文件中的链表存取问题

5

这是一个读取文件中的链表,然后再存进新的链表为本次操作所使用,但是在存到新链表中
,画红线的p2->next=p1;的时候就会报错。这是一个双向链表,图片说明图片说明

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 复制链接分享
  • 邀请回答

4条回答

  • tusong86 tusong86 5年前

    1.首先fread的用法有问题吧,fread一般就读取字符串,你那个Doctor的结构是什么样的,也是需要看的
    2.fread((&p1, sizeof(Doctor), 1, fp)) != EOF
    这句话要改成.fread((p1, sizeof(Doctor), 1, fp)) != EOF
    你试试看

    点赞 1 评论 复制链接分享
  • qq423399099 小灸舞 5年前

    next和prece指针的写法并没有错
    感觉是你的fread有问题,应该是fread((&p1, sizeof(Doctor), 1, fp)) != EOF
    你sizeof一个指针,永远是4

    点赞 1 评论 复制链接分享
  • webcqsec webcq1999 5年前

    不知道 Doctor 结构的定义是怎样的,除了 next 成员外应该还有专门存储数据的成员(如 data),所以应使用 fread(&(p1->data),sizeof(p1->data),1,fp) 的方式读取数据。

    而使用 fread(&p1,sizeof(p1),1,fp) 的方式读取数据,实际是将数据读入了 p1 指针之中,导致 p1 不再指向原来的 new Doctor 对象,所以再次访问 p1 所指向的内存时导致内存访问异常。

    点赞 评论 复制链接分享
  • qq_31597573 zengweitju 5年前

    问题应该出在fread((p1, sizeof(Doctor), 1, fp)) != EOF和p2=p1,你txt文件中一个数据项大小应该等于sizeof(Doctor).

    点赞 评论 复制链接分享

为你推荐