您的位置:首页 > 编程语言 > C语言/C++

C语言初步-第43讲: 从文本文件中读入数据(算工资)

2017-10-05 13:36 302 查看
任务和代码:

/*
*All rights reserved
*文件名称:main.c
*作者: Osseyda
完成日期:2017.10.5
*版本号:v2.
*
*问题描述:从文件salarylist.txt中读入工人的工号、基本工资、奖金,将奖金全部增加20%(好事)后,将工号、基本工资、奖金和应发工资(前项目之和)保存到文件revenue.txt中。
*问题输出:文件中显示输出结果。
*/
#include <stdio.h>
#include <stdlib.h>
int main(){
FILE *fpin,*fpout;
if((fpin=fopen("salarylist.txt","r"))==NULL){
printf("salarylist file cannot be opened");
exit(0);
}
if((fpout=fopen("revenue.txt","w"))==NULL){
printf("revenue file cannot be opened");
exit(0);
}
int number;
float salary,bonus,revenue;
while((fscanf(fpin,"%d %f %f %f",&number,&salary,&bonus,&revenue))!=EOF){
bonus*=1.2;
fprintf(fpout,"%d %.2f %.2f %.2f\n",number,salary,bonus,salary+bonus);
}
printf("process is done\n");
return 0;
}
运行结果:



由上一篇在读入数据中介绍到的小技巧,引申出另一种解法:

/*
*All rights reserved
*文件名称:main.c
*作者: Osseyda
完成日期:2017.10.5
*版本号:v2.
*
*问题描述:从文件salarylist.txt中读入工人的工号、基本工资、奖金,将奖金全部增加20%(好事)后,将工号、基本工资、奖金和应发工资(前项目之和)保存到文件revenue.txt中。
*问题输出:文件中显示输出结果。
*/
#include <stdio.h>
#include <stdlib.h>
int main(){
FILE *fpin,*fpout;
if((fpin=fopen("salarylist.txt","r"))==NULL){
printf("salarylist file cannot be opened");
exit(0);
}
if((fpout=fopen("revenue.txt","w"))==NULL){
printf("revenue file cannot be opened");
exit(0);
}
int number;
float salary,bonus,revenue;
while((fscanf(fpin,"%d",&number))==1){
fscanf(fpin,"%f",&salary);
fscanf(fpin,"%f",&bonus);
fscanf(fpin,"%f",&revenue);
bonus*=1.2;
fprintf(fpout,"%d %.2f %.2f %.2f\n",number,salary,bonus,salary+bonus);
}
printf("proceed is done\n");
return 0;
}

salarylist.txt

知识点总结:

        从文件中读取数据,并将结果存入文档

心得:

       在解第二种解法时,原认为变量revenue用不到,

//fscanf(fpin,"%f",&revenue);
       便把这条语句注释掉了,结果循环到第二次的时候,输出的数据都有问题,因此:

       在扫描文件中的数据时,一个都不能漏掉,哪怕是输出时用不到的数据。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  c语言