无法把txt文件的数据存储在链表里,代码有问题吗?

void readdata(void)
{
    FILE *fp;
    EMP *emp1;
    
    if((fp=fopen("employee.txt","r"))==NULL)
    {
        gfirst=1;
        return;                                        
    }     
    
    while(!feof(fp))
    {
        emp1=(EMP *)malloc(sizeof(EMP));
        if(emp1==NULL)
        {
            printf("内存分配失败!\n");
            getch();
            return;              
        }          
        
        
        fscanf(fp,"%d%s%s%s%d%s%d%s%s%s%s%s",emp1->num,emp1->duty,emp1->name,emp1->sex,emp1->age,emp1->edu,emp1->salary,emp1->tel_office,emp1->tel_home,emp1->mobile,emp1->qq,emp1->address);
        fread(emp1,sizeof(EMP),1,fp);
        if(feof(fp))  break;
        
        if(emp_first==NULL)
        {
           emp_first=emp1;
           emp_end=emp1;                   
        }else{
            emp_end->next=emp1;
            emp_end=emp1;   
        }
        emp_end->next=NULL;
    }
    gfirst=0;
    fclose(fp);
}

 

修改如下,供参考:

void readdata(void)
{
    FILE *fp;
    EMP *emp1;
    if((fp=fopen("employee.txt","r"))==NULL)
    {
        gfirst=1;
        return;
    }
    while(!feof(fp))
    {
        emp1=(EMP *)malloc(sizeof(EMP));
        if(emp1==NULL){
            printf("内存分配失败!\n");
            getch();
            return;
        }
        fscanf(fp,"%d%s%s%s%d%s%d%s%s%s%s%s",emp1->num,emp1->duty,emp1->name,emp1->sex,emp1->age,
        emp1->edu,emp1->salary,emp1->tel_office,emp1->tel_home,emp1->mobile,emp1->qq,emp1->address);
                                                                     //fread(emp1,sizeof(EMP),1,fp);
                                                                      //if(feof(fp))  break;
        if(emp_first==NULL)
        {
           emp_first=emp1;
           emp_end=emp1;
        }else{
            emp_end->next=emp1;
            emp_end=emp1;
        }
    }
    emp_end->next=NULL;
    gfirst=0;
    fclose(fp);
}

 

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

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