c语言上机实验12
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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); }