📄 实验8.cpp
字号:
#include<stdio.h>
#include<stdlib.h>
#define n 5
void main( )
{
FILE *fp1; /*定义文件指针*/
char *temp;
int i;
struct stu{ /* 定义学生记录结构*/
char name[15];
char num[6];
float score[2];
}student[n];
if ((fp1=fopen("test.txt","wb"))==NULL) /*以二进制只写方式打开文件*/
{
printf("cannot open file");
exit(0);
}
for( i=0;i<n;i++)
{
printf("input name:"); //输入姓名
gets(student[i].name);
printf("input num:");
gets(student[i].num); //输入学号
printf("input score1:");
gets(temp); //输入一科成绩
student[i].score[0]=atof(temp);
printf("input score2:");
gets(temp); // 输入第二科成绩
student[i].score[1]=atof(temp);
fwrite(&student[i],sizeof(struct stu),1,fp1); // 成块写入
}
fclose(fp1); //关闭
if((fp1=fopen("test.txt","rb+"))==NULL)
{ //以可读写方式打开文件
printf("cannot open file");
exit(0);
}
printf("---------------------\n");
printf("%-15s%-7s%-7s%-7s\n","name","num","score1","score2");
printf("---------------------\n");
for (i=0;i<n;i++)
{ //显示全部文件内容
fread(&student[i],sizeof(struct stu),1,fp1);
printf("%-15s%-7s%7.2f%7.2f\n",student[i].name,student[i].num,student[i].score[0],student[i].score[1]);
}
//以下进行文件的随机读写
fseek(fp1,3*sizeof(struct stu),0); //定位文件指针指向第三条记录
fwrite(&student[1],sizeof(struct stu),1,fp1);
// 在第三条记录处写入第二条记录
rewind(fp1); //移动文件指针到文件头
printf("---------------------\n");
printf("%-15s%-7s%-7s%-7s\n","name","num","score1","score2");
printf("---------------------\n");
for (i=0;i<n;i++)
{ //重新输出文件内容
fread(&student[i],sizeof(struct stu),1,fp1);
printf("%-15s%-7s%7.2f%7.2f\n",student[i].name,student[i].num,student[i].score[0],student[i].score[1]);
}
fclose(fp1); //关闭文件
}
/*实验内容
有5个学生,每个学生有3门课的成绩,从键盘输入以上数据(包括学生号、姓名、3门课成绩),计算出平均成绩,将原有数据和计算出的平均分数存放在磁盘文件stud中。并打印出来。
设5名学生的学号、姓名和3门课成绩如下:
99101 Wang 89,98,67.5
99103 Li 60,80,90
99106 Fun 75.5,91.5,99
99110 Ling 100,50,62.5
99113 Yuan 58,68,7l
在向文件stud写入数据后,应检查验证stud文件中的内容是否正确。*/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -