如何解决我的代码未将数据打印到文件中
我正在编写一个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 举报,一经查实,本站将立刻删除。