c语言上机实验12

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

实验十二文件的操作(二)

一.实验目的

1.掌握文件指针的基本概念与定义方法;

2.掌握对文件进行读写、定位等的操作方法。

二.实验环境

1.硬件:PII以上计算机;

2.软件:Windows、V isual C++ 6.0;

3.其它:一张软盘或者U盘等可移动的存储设备。

三.实验内容

练习1.有5个学生,每个学生的数据包括学号、姓名、三门课的成绩,从键盘输入5个学生的数据,要求:

⑴将读入的数据存入磁盘文件“stu.txt”中;

⑵从磁盘文件“stu.txt”中读出并显示所有学生数据;

⑶将指定课程、指定分数段范围内的学生数据另存入磁盘文件“range.txt”中;

⑷从磁盘文件“range.txt”中读出并显示学生数据。

⑸用记事本打开磁盘文件“stu.txt”和“range.txt”验证其内容。

要求:使用fscanf和fprintf函数。

运行结果示例:

程序主框架:

#inc lud e "std lib.h"

#inc lud e "iostr ea m.h"

#inc lud e "std io.h"

#def ine F ORMAT "%d %s %d %d %d" // 定义格式控制符

#def ine N 5

struc t stude nt

{

int nu m;

c har nam e[20];

int sc ore[3];

}stu[N];

vo id inpu t(c har a[])// a用于接收要写入数据的文件名

{

}

vo id o utp ut(c har a[],int sn) // sn用于接收要输出文件中的学生人数

{

}

int se lec t(c har a[],c h ar b[])// 函数返回值为挑选出来的学生人数

{

}

vo id m a in()

{

int sn;

input("s tu.txt");

outp ut("stu.t xt",N);

sn=se lec t("st u.txt","r ang e.tx t");

outp ut("ra ng e.txt",sn);

}

答案

1.

#include

#include

#include

#define FORMA T "%d %s %d %d %d"

#define N 5

struct student

{

int num;

char name[20];

int score[3];

}stu[N];

void input(char a[])

{

FILE *fp1;

int i;

if((fp1=fopen(a,"w"))==NULL)

{

cout<<"cannot open file"<

exit(0);

}

cout<<"输入学生的数据:"<

for(i=0;i

{

cin>>stu[i].num>>stu[i].name>>stu[i].score[0]>>stu[i].score[1]>>stu[i].score[2];

fprintf(fp1,FORMA T,stu[i].num,stu[i].name,stu[i].score[0],stu[i].score[1],stu[i].score[2]);

fprintf(fp1,"%c","\n");

}

fclose(fp1);

}

void output(char a[],int sn)

{

FILE *fp1;

int i;

if((fp1=fopen(a,"r"))==NULL)

{

cout<<"cannot open file"<

exit(0);

}

cout<

for(i=0;i

{

fscanf(fp1,FORMA T,&stu[i].num,&stu[i].name,&stu[i].score[0],&stu[i].score[1],&stu[i].score[2]) ;

cout<

cout<

}

cout<

fclose(fp1);

}

int select(char a[],char b[])

{

int x,y,z,i,n=0;

FILE *fp1,*fp2;

cout<<"输入课程号(1-3):";

cin>>x;

cout<<"输入分数段(XX-YY):";

cin>>y>>z;

if((fp1=fopen(a,"r"))==NULL)

{

cout<<"cannot open file"<

exit(0);

}

if((fp2=fopen(b,"w"))==NULL)

{

cout<<"cannot open file"<

exit(0);

}

for(i=0;i

{

if(stu[i].score[x-1]>y&&stu[i].score[x-1]

{

fscanf(fp1,FORMA T,&stu[i].num,&stu[i].name,&stu[i].score[0],&stu[i].score[1],&stu[i].score[2]) ;

fprintf(fp2,FORMA T,stu[i].num,stu[i].name,stu[i].score[0],stu[i].score[1],stu[i].score[2]);

fprintf(fp2,"%c","\n");

n++;

}

}

fclose(fp1);

fclose(fp2);

return n;

}

void main()

{

int sn;

input("stu.txt");

output("stu.txt",N);

sn=select("stu.txt","range.txt");

output("range.txt",sn);

}

相关文档
最新文档