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

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

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

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

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

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

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