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 delta降尺度计算的一些细节,有偿
  • ¥15 Arduino红外遥控代码有问题
  • ¥15 数值计算离散正交多项式
  • ¥30 数值计算均差系数编程
  • ¥15 redis-full-check比较 两个集群的数据出错
  • ¥15 Matlab编程问题
  • ¥15 训练的多模态特征融合模型准确度很低怎么办
  • ¥15 kylin启动报错log4j类冲突
  • ¥15 超声波模块测距控制点灯,灯的闪烁很不稳定,经过调试发现测的距离偏大
  • ¥15 import arcpy出现importing _arcgisscripting 找不到相关程序