微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

我的代码未将数据打印到文件中

如何解决我的代码未将数据打印到文件中

我正在编写一个C代码,该代码将从一个包含以下数据的文本文件中读取数据:姓名,年龄,收入

成功读取数据后,数据将分为两个不同的文件在第一个中,所有年龄低于平均年龄的条目 第二个收入高于平均水平的所有条目

但是,我的代码仅将最后一个数据打印到两个文件中。我不知道我的代码有什么问题。

我的密码

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

typedef struct 
{
    char name[15];
    int age;
    float income;
} data;

void input(FILE*,data*);
void output1(FILE*,data*);
void output2(FILE* file2,data* data);

int main(void) {
        data p;
        data *place = &p;
        char fileR[10] = "F1.txt",file1W[10] = "F2.txt",file2W[10] = "F3.txt";
        float ave_income = 0,sum_income = 0; 
        int ave_age = 0,sum_age = 0,count = 0;
        
        FILE *fi,*fo1,*fo2;
        fi = fopen(fileR,"r");
        fo1 = fopen(file1W,"w");
        fo2 = fopen(file2W,"w");
        
        do{
            input(fi,place);
            sum_age+=p.age;
            ++count;        
            
        }while(fgetc(fi)!=EOF);
        
        ave_age = sum_age/count;
        
        
        do{
            if (p.age < ave_age) 
            {   
                output1(fo1,place);
            }       
            else
            {
                continue;
            }
        }while(fgetc(fi)!=EOF);
        
        do{
            input(fi,place);
            sum_income+=p.income;       
            
        }while(fgetc(fi)!=EOF);
        
        ave_income = sum_income/count;
        
        
        do{
            if (p.income > ave_income) 
            {   
                output2(fo2,place);
            }       
            else
            {
                continue;
            }
        }while(fgetc(fi)!=EOF);
    
fclose(fi);
fclose(fo1);    
fclose(fo2);

return 0; 
}
        
void input(FILE* f,data* data)
{
    fscanf(f,"%s %d %f",data->name,&data->age,&data->income);
}
     
void output1(FILE* file,data* data)
{
    
    fprintf(file,"Name %s \nAge: %d\nWind Income: %f \n",data->age,data->income ); //prints to the file
    printf("Name %s \nAge: %d\nIncome: %f \n",data->income); //prints
}

void output2(FILE* file2,data* data)
{
    
    fprintf(file2,data->income); //prints
}

文本文件

Alex    25  670
John    24  830
Jessica 31  800
Milana  27  680
Kaarel  28  1200
Triin   34  1300
Maria   29  1450
Jaanus  28  1350
Maaris  26  1100

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。