这个问题和利用变量接收输出数据导致最后一行重复输出的原理是一样的,问题都在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);