怎么修改使读档成功?

#include<stdlib.h>
#include<string.h>

struct TXL{
    char name[30];
    char qq[15];
    char city[30];
    char Email[30];
    char num[12];
    struct TXL *next;
    struct TXL *prior;
};

struct TXL *start;
struct TXL *last;
struct TXL *find1(char *);
struct TXL *find2(char *);
void enter();
void search1();
void search2();
void save();
void load();
void list();
void mldelete(struct TXL **,struct TXL **);
void dls_store(struct TXL *i,struct TXL **start,struct TXL **last);
void inputs(char *,char *,int);
void display(struct TXL *);
int menu_select(void);

//菜单
int menu_select(void)
{
    char s[80];
    int c;
    printf("***********欢迎使用通讯录系统***********\n");
    printf("************** 1.输入信息 ***************\n");
    printf("************** 2.删除信息 ***************\n");
    printf("************** 3.显示信息 ***************\n");
    printf("************** 4.姓名查找 ***************\n");
    printf("************** 5.号码查找 ***************\n");
    printf("************** 6.存档     ***************\n");
    printf("************** 7.读档     ***************\n");
    printf("************** 8.退出     ***************\n");
    printf("*****************************************\n");
    do{
      printf("\n请输入你要进行的操作(1-8):");
      gets(s);
      c = atoi(s);
    }
    while(c<0||c>8);
        return c;
}

int main(void)
{
   start = last = NULL;
   for(;;)
   {
       switch(menu_select())
       {
       case 1:enter();                                  //输入信息
            continue;
          case 2:mldelete(&start,&last);                //删除信息
            continue;
          case 3:list();                                //显示信息
             continue;
          case 4:search1();                             //姓名查找
             continue;
          case 5:search2();                             //号码查找
              continue;
          case 6:save();                                //保存
             continue;
          case 7:load();                                //读档
             continue;
          case 8:exit(0);                               //退出
        }
    }
}

void enter()
{
    struct TXL *info;
    for(;;)
    {
        info=(struct TXL *)malloc(sizeof(struct TXL));
        if(!info)
        {
            printf("\n Out of memory");
            exit(0);
        }
        printf("\n输入空姓名结束!\n");
        inputs("输入姓名:",info->name,30);
        if(!info->name[0])
            break;
        inputs("输入城市:",info->city,30);
        inputs("输入号码:",info->num,12);
        inputs("输入QQ:",info->qq,100);
        inputs("输入电子邮箱:",info->Email,30);
       dls_store(info,&start,&last);
    }
}

void inputs(char *prompt,char *s,int count)
{
     char p[255];
     do
     {
         printf(prompt);
         fgets(p,254,stdin);
         if(strlen(p)>count)
             printf("\n输入过长!\n");
     }
     while(strlen(p)>count);
     p[strlen(p)-1]=0;
     strcpy(s,p);
}

void dls_store(struct TXL *i,struct TXL **start,struct TXL **last)
{
    struct TXL *old,*p;
    if(*last==NULL)
    {
        i->next=NULL;
        i->prior=NULL;
        *last=i;
        *start=i;
        return;
    }
    p=*start;
    old=NULL;
    while(p)
    {
        if(strcmp(p->name,i->name)<0)
        {
            old=p;
            p=p->next;
        }
        else
            {
            if(p->prior)
            {
                p->prior->next=i;
                i->next=p;
                i->prior=p->prior;
                p->prior=i;
                return;
            }
            i->next=p;
            i->prior=NULL;
            p->prior=i;
            *start=i;
            return;
        }
    }
    old->next=i;
    i->next=NULL;
    i->prior=old;
    *last=i;
}

//删除信息
void mldelete(struct TXL **start,struct TXL **last)
{
    struct TXL *info;
    char s[80];
    inputs("输入姓名:",s,30);
    info=find1(s);
    if(info)
        {
            printf("删除中......\n");
            if(*start==info)
            {
                *start=info->next;
            if(*start)
                (*start)->prior=NULL;
            else
                *last=NULL;
    }
        else
            {
                 info->prior->next=info->next;
            if(info!=*last)
                info->next->prior=info->prior;
            else
                *last=info->prior;
        }
        free(info);
        printf("Ok,删除成功!\n");
    }
}

//姓名查找
struct TXL *find1(char *name)
{
    struct TXL *info;
    info=start;
    while(info)
    {
        if(!strcmp(name,info->name))
            return info;
        info=info->next;
    }
    printf("\n");
    return NULL;
}

//号码查找
struct TXL *find2(char *num)
{
    struct TXL *info;
    info=start;
    while(info)
    {
        if(!strcmp(num,info->num))
            return info;
        info=info->next;
    }
    printf("\n");
    return NULL;
}

//显示信息
void list(void)
{
    struct TXL *info;
    info=start;
    if(info==NULL)
        printf("没有任何信息!");
    while(info)
    {
        display(info);
        info=info->next;
    }
    printf("\n\n");
}
void display(struct TXL *info)
{
    printf("姓名:%s\n",info->name);
    printf("城市:%s\n",info->city);
    printf("号码:%s\n",info->num);
    printf("QQ:%s\n",info->qq);
    printf("电子邮箱:%s\n",info->Email);
    printf("\n");
}

//输出姓名查找结果
void search1(void)
{
    char name[40];
    struct TXL *info;
    printf("查找的姓名:");
    gets(name);
    info=find1(name);
    if(!info)
        printf("没有该姓名任何信息!\n\n");
    else
        display(info);
}

//输出号码查找结果
void search2(void)
{
    char num[12];
    struct TXL *info;
    printf("查找的号码:");
    gets(num);
    info=find2(num);
    if(!info)
        printf("没有该号码任何信息!\n\n");
    else
        display(info);
}

//保存
void save(void)
{
    struct TXL *info;
    FILE *fp;
    fp=fopen("D:\\项目.txt","w");
    if(!fp)
    {
        printf("打开文件失败!\n");
        return;
    }
        printf("\n保存中 ……\n");
        info=start;
        while(info)
        {
            fwrite(info,sizeof(struct TXL),1,fp);
            info=info->next;
        }
        printf("已完成!\n");
        fclose(fp);
}

//读档
void load()
{
    register int t, size;
    struct TXL *info,*temp=0;
    char *p;
    FILE *fp;
    if((fp=fopen("D:\\项目.txt","r"))==NULL)
    {
        printf("不能打开文件!\n");
        exit(0);
    }
    printf("\n请稍等...\n");
    size=sizeof(struct TXL);
    start==malloc(size);
    if(!start)
    {
        printf("内存不足!\n");
        exit(0);
    }
    info=start;
    p=(char*)info;
    while((*p++=getc(fp))!=EOF)
    {
        for(t=0;t<size-1;++t)
            *p++=getc(fp);
        info->next==malloc(size);
        if(!info->next)
        {
            printf("内存不足!\n");
            return;
        }
        info->prior=temp;
        temp=info;
        info=info->next;
        p=(char*)info;
    }
    temp->next=0;
    last=temp;
    start->prior=0;
    fclose(fp);
    printf("OK!打开成功!\n");
}


不知道你这个问题是否已经解决, 如果还没有解决的话:

如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^