eliceeop 2020-12-03 03:19 采纳率: 100%
浏览 178
已采纳

为什么我的feof函数一直循环?

这是我的代码

data *data_daoru(data *h)
{
    FILE *f;
    data *c,*d;
    h=(data*)malloc(sizeof(data));
    h->nex=NULL;
    count=0;
    if((f=fopen("data.txt","r"))==NULL){
        printf("\n\t打开文件失败!\n\n");
        exit(0);
    }
    d=h;
    printf("正在导入学生信息中........");
    while(!feof(f)){
        c=(data*)malloc(sizeof(data));                //分配空间 
        fscanf(f,"%d %s %s %s %s %d %d %d %.1f %d %d %d %d %.1f",&c->number,c->name,c->sex,c->adds,c->phone,&c->chinese,&c->math,&c->english,&c->aver,&c->ksmc,&c->stu,&c->pinde,&c->teacher,&c->ceping);  
        if(!feof(f)){
        d->nex=c;
        printf("%d",h->nex);
        c->nex=NULL;
        d=c;
        count++;
    }
}
    fclose(f); 
    printf("\n\n\t\t");
    printf("%d\n",h->nex->nex->nex);
    printf("导入学生信息成功,共导入%d条记录。\n",count);
    c=h->nex;
    d=h;
    printf("%d\n",c->number);
    system("pause");
    return d;    
}

这是我的文件

 

这是我运行的程序

展开全部

  • 写回答

1条回答 默认 最新

  • 追逐时代的脚步 2020-12-03 05:19
    关注

    fscanf 成功的时候会返回读取的字节数,如果失败,或文件读完的时候会返回EOF,你可以用fscanf的返回值来判断,数据是否处理完.来替换feof(f).

    如果刚开始,fscanf就失败了,文件是没有结束的.

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
编辑
预览

报告相同问题?

手机看
程序员都在用的中文IT技术交流社区

程序员都在用的中文IT技术交流社区

专业的中文 IT 技术社区,与千万技术人共成长

专业的中文 IT 技术社区,与千万技术人共成长

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

客服 返回
顶部