南京信息工程大学C语言程序设计 实验(实习)报告
实验(实习)名称_数组实验(实习)日期 6.25 得分______ 指导老师 吴婷婷 系 专业 班级 姓名 学号 1.
实验目的
(1)通过实验进一步掌握文件与文件指针的概念,会定义和使用数组;
(2)能正确使用文件打开,文件关闭,读写文件等基本的文件操作函数;
(3)能运用文件操作函数进行程序设计。 2. 实验内容
某班有学生145人,每人的信息包括:学号、姓名、性别和成绩。编制一个C语言程序完成以下操作: (1) 定义一个结构体类型数组。
(2) 打开可读写的新文件student.date。
(3) 使用函数fwrite将结构体数组内容写入文件student.dat。
(4) 关闭文件student.dat。 (5) 打开可读写文件student.dat。
(6) 从文件中依次读出各学生情况并按学生成绩进行排序,输出排好序后的数据。 (7) 关闭文件student.dat。
#include
#define STUDENT_NUM 145 typedef struct {
int number; char name[12]; char gender; float grades; }students;
void sortstudents(students[]); void displaystudents(students[]); int main(void) {
FILE *fp; int i;
students studentForWrite[STUDENT_NUM],studentForRead[STUDENT_NUM]; if((fp=fopen(\{
fprintf(stderr,\exit(1); }
puts(\请输出各个学生的情况:\for(i=0;i scanf(\i].name,&studentForWrite[i].gender,&studentForWrite[i].grades); if(fwrite(&studentForWrite[i],sizeof(students),1,fp)!=1) { fprintf(stderr,\exit(2); } } if(fclose(fp)==EOF) { fprintf(stderr,\exit(3); } if((fp=fopen(\{ fprintf(stderr,\exit(4); } for(i=0;i { if(fread(&studentForWrite[i],sizeof(students),1,fp)!=1) { fprintf(stderr,\exit(5); } } if(fclose(fp)==EOF) { fprintf(stderr,\exit(6); } sortstudents(studentForRead); displaystudents(studentForRead); return 0; } void sortStudents(students studentToSort[]) { int top,seek; students temp; for(top=0;top for(seek=top+1;seek if(studentToSort[top].grades>studentToSort[seek].grades) { temp=studentToSort[top]; studentToSort[top]=studentToSort[seek]; studentToSort[seek]=temp; } } } } void displaystudents(Students studentToDisplay[]) { int index; puts(\”); for(index=0;index printf(\”,studentToDisplay[index].number,studentToDisplay[index].name,studentToDisplay[index].gender,studentToDisplay[index].grades); } }