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

为什么我的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 13:19
    关注

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

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

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

报告相同问题?

悬赏问题

  • ¥15 微带串馈天线阵列每个阵元宽度计算
  • ¥15 keil的map文件中Image component sizes各项意思
  • ¥30 BC260Y用MQTT向阿里云发布主题消息一直错误
  • ¥20 求个正点原子stm32f407开发版的贪吃蛇游戏
  • ¥15 划分vlan后,链路不通了?
  • ¥20 求各位懂行的人,注册表能不能看到usb使用得具体信息,干了什么,传输了什么数据
  • ¥15 Vue3 大型图片数据拖动排序
  • ¥15 Centos / PETGEM
  • ¥15 划分vlan后不通了
  • ¥20 用雷电模拟器安装百达屋apk一直闪退