pta 有结构文件的读写1:ST的类型定义如下:typedef struct student{ char name[10],id[10]; int gender; int age; double sc

学生类型: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)
{
   ST s[20];
    int i=0;
    while( (fscanf(fin,"%s%s%d%d%lf",s[i].name,s[i].id,&s[i].gender,&s[i].age,&s[i].scored))!=EOF)
    {
       output(&s[i],fout);
        i++;
    }
}
void fun(FILE *fin,FILE *fout)
{
   ST *p=(ST *)malloc(sizeof(ST));
    
    while( (fscanf(fin,"%s%s%d%d%lf",p->name,p->id,&p->gender,&p->age,&p->scored))!=EOF)
    {
       output(p,fout);
       p=(ST *)malloc(sizeof(ST));
    }
}
void fun(FILE *fin,FILE *fout)
{
 
    while(feof(fin)==0)
    {
        ST *p=(ST *)malloc(sizeof(ST));
        if((fscanf(fin,"%s%s%d%d%lf",p->name,p->id,&p->gender,&p->age,&p->scored))!=EOF)
        output(p,fout);   
    }
}

 

  • 1
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值