这个问题和利用变量接收输出数据导致最后一行重复输出的原理是一样的,问题都在feof函数的身上!
忘记原理的同学们请仔细看一下关于变量重复输出的博客,在这里就不讲那么详细了,C/C++用变量访问输出文件,出现最后一条数据重复输出两次的原因解析
他们的问题都是feof造成了最后一行的错误输出,不同之处就是,链表会使得多出的那一行为乱七八糟的数据,而变量则是与是一条数据一样的重复输出。
上代码:
while(!feof(fp))
{
p=new mNode;//生成新结点
fread(&(p->data),sizeof(Member),1,fp);//将数据从文件中读取
r->next=p;
p->next=NULL;
//插入结点到表尾
r=p;//指向新的尾结点
}
p = L->next;
printf("\n\tID\t姓名\t性别\t关系\t联系电话\n");
while(p!=NULL)
{
printf("\t%d",p->data.ID);
C/C++链表存储文件内容:乱码与feof函数错误

这篇博客讨论了在C/C++中使用链表存储文件内容时,输出时最后一行出现乱码的问题,根源在于feof()函数的误判。文章解释了feof如何导致链表多开辟一个空间并存储了磁盘的随机数据,与变量重复输出的区别,并提供了解决方案,即在开辟链表空间前加入文件指针是否到达文件末尾的判断。
最低0.47元/天 解锁文章
1001





