学生类型:ST的类型定义如下:
typedef struct student{ char name[10],id[10]; int gender; int age; double scored; } ST; 编写函数,从指定的文件上读入若干字符串,每行字符串是一个学生的信息(姓名,学号,性别,年龄,分数)的字符串表示,数据间以空格
分隔,将学生们的信息存储于一个结构体中,并利用output()函数输出到指定文件中。
函数接口定义:
void fun(FILE *fin,FILE *fout);
其中 fin
和 fout
都是用户传入的参数。 前者是已正常打开的可读文件,而后者是已正常打开的可写文件。
裁判测试程序样例:
在这里给出函数被调用进行测试的例子。例如:
#include <stdio.h>
#include <stdlib.h>
typedef struct student{
char name[10],id[10];
int gender;
int age;
double scored;
} ST;
void output(ST *d,FILE *fout){//测试程序,输出到文件调用此函数完成
if(d==NULL) {printf("null\n");return;}
fprintf(fout,"%s,%s,%d,%d,%4.2f\n",d->name,d->id,d->gender,d->age,d->scored);
}
void fun(FILE *fin,FILE *fout);//<--需要完成的函数(包括读入字符串,转换成对应的结构体,并利用函数(output())输出到指定文件中,输入输出文件不用考虑
/* 请在这里填写答案 */
输入样例:
从固定文件中读取:文件内容:
aaa 123 0 18 88.88
bbb 456 1 19 99.99
ccc 789 1 18 66.66
ddd 356 0 18 67.89
输出样例:
输出到指定文件中,文件内容:
aaa,123,0,18,88.88
bbb,456,1,19,99.99
ccc,789,1,18,66.66
ddd,356,0,18,67.89
void fun(FILE *fin,FILE *fout)
{
for(ST s;fscanf(fin,"%s%s%d%d%lf",s.name,s.id,&s.gender,&s.age,&s.scored)!=EOF;output(&s,fout));
//注意,id要用%s,因为防止0XX的情况,该情况是无法用%d读取
}