(不知怎么修正,求指点)一个用C语言实现将TXT文件数据加载到链表的程序

(不知如何修正,求指点)一个用C语言实现将TXT文件数据加载到链表的程序


可以将数据写入data中,转化成链表失败,显示为空,自己找出来一些问题,用红色标注了,哪位大侠帮小弟分析下!


*
 * list.h
 *
 *  Created on: 2014-1-18
 *      Author: Administrator
 */

#ifndef LIST_H_
#define LIST_H_

typedef struct stu
{
char name[10];

}Ltem;
typedef struct node *pnode;/*定义节点的指针*/
typedef struct node
{
Ltem  item;
struct node *next;
}node;

typedef pnode position;
typedef pnode list;


list makeempty(list L);
//功能:生成空链表

void  display(list L);
//打印链表

#endif /* LIST_H_ */



void  display(list L)
{
if(L==NULL)
{
return ;
}
list p=L;
p=p->next;
while(p!=NULL)
{
printf("debug2");//此处也没有打印,P直接为NULL;
printf("%s",p->item.name);
p=p->next;
}

}

list filetolist(FILE* fp,list L)
{

list temp;
Ltem a;
while(fread(&a,sizeof(a),1,fp)>0)
{

temp=(list)malloc(sizeof(node));
temp->item=a;
temp->next=L->next;
L->next=temp;
        printf("debug1");//此处未打印出来,估计是fread的问题,但是不知道如何修改!
}
return L;
}



#include<stdio.h>
#include<stdlib.h>
#include"list.h"

int main()
{
FILE* fp=NULL;
list L=NULL;
L=makeempty(L);
Ltem b[5] = {{"aa"},{"bb"},{"cc"},{"dd"},{"ee"}};

    if((fp = fopen("data.txt", "wb"))==NULL)
    {
     printf("file open error");
    }

fwrite(b, sizeof(Ltem), 5, fp);
    fseek(fp, 0, SEEK_SET);
L=filetolist(fp,L);
display(L);
fclose(fp);
return 0;
}

------解决方案--------------------
读写用"wb+"模式;另外,写完先fflush一下再读稳当点...
------解决方案--------------------
应该是文件打开方式的问题,wb方式只写不读,改成wb+试试