例:有N个学生,每个学生的数据包括学号、姓名、一门课的成绩,从键盘输入N个学生的数据,要求:
⑴ 将读入的数据存入磁盘文件“stu.txt”中;
⑵ 从磁盘文件“stu.txt”中读出并显示所有学生数据;
要求:使用fscanf和fprintf函数。
#include "stdlib.h"
#include "iostream.h"
#include "stdio.h"
#define FORMAT "%d %s %f"
#define N 3
struct student
{
intnum;
charname[20];
floatscore;
}stu[N];
void input(char a[]) // a用于接收要写入数据的文件名
{
int i;
FILE*fp;
if((fp=fopen(a,"w"))==NULL)
{
printf("Cannotopen file.");
exit(0);
}
cout<<"输入学生的数据:"<<endl;
for(i=0;i<N;i++)
{
scanf(FORMAT,&stu[i].num,stu[i].name,&stu[i].score);
fprintf(fp,FORMAT,stu[i].num,stu[i].name,stu[i].score);
}
fclose(fp);
}
void output(char a[],int sn) // sn用于接收要输出文件中的学生人数
{
int i;
FILE*fp;
if((fp=fopen(a,"r"))==NULL)
{
printf("Cannotopen file.");
exit(0);
}
cout<<endl<<"输出学生的数据:"<<endl;
for(i=0;i<sn;i++)
{
fscanf(fp,FORMAT,&stu[i].num,stu[i].name,&stu[i].score);
printf(FORMAT,stu[i].num,stu[i].name,stu[i].score);
printf(“\n”);
}
fclose(fp);
}
void main()
{
chara[20];
cout<<"输入文件名:";
cin>>a;
input(a); //加入文件名参数可以使子函数更具有通用性
output(a,N); // 加入参数N可以灵活选择子函数输出数据的个数
}