c语言文件数据写入链表的问题

大牛们帮我看看为什么我的代码只能读一组数据,多组数据写入时会覆盖前一组
int bookread(){
 ptcs p=head;
 int i,m,j=0;
 ptcs tem;     
 FILE* fp;
 if((fp=fopen("D:\\bookdata.txt","rb"))==NULL){
  printf("无法打开文件\n");
  return -1;
 }
 fseek(fp,0,SEEK_END); 
 i=ftell(fp);    //获取文本容量大小
 fseek(fp,0,SEEK_SET);  //将文本指针移动到文本开头
 m=(i/(sizeof(book)));  //获取文本中联系人个数     正确
 book b;
 while(m>0){
  fread(&b,sizeof(book),1,fp);
  tem=(ptcs)malloc(sizeof(*tem));
  tem->next=p;
  memset(tem,0,sizeof(*tem));
  memcpy(tem,&b,sizeof(book));
  p->next=tem;
  j++;
  m--;
 }
 fclose(fp);
 printf("信息读取完毕!\n");
 return 0; 
}

你可能感兴趣的:(c语言文件数据写入链表的问题)