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

问题描述

我正在编写一个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 (将#修改为@)