一、实验目的
1.掌握C语言中文件和文件指针的概念
2.掌握C语言中文件的打开与关闭及各种文件函数的使用方法。
二、实验内容
1. 从键盘上接收字符写到文件中去,然后将其关闭。
2. 从文件中读取字符,并通过显示器显示出来,然后将其关闭。
3.设计一个保存学生情况的结构,学生情况包括姓名、性别、年龄和一门课程的成绩。从键盘输入45个学生的情况,将其写入文件docu.dat中。然后从文件中读出数据,求出成绩的最大值。
三、实验源程序及结果截图
1.
#include <stdio.h>
#include <stdlib.h>
int main()
{
FILE *fp;
char ch;
if((fp=fopen("test.dat","w"))==NULL) //打开文件
{
printf("error");
exit(1);
}
ch=getchar(); //输入字符
fputc(ch,fp); //将字符存入文件
fclose(fp); //关闭文件
return 0;
}
2.
#include <stdio.h>
#include <stdlib.h>
int main()
{
FILE *fp;
char ch;
if((fp=fopen("test.txt","r"))==NULL) //打开文件
{
printf("error");
exit(1);
}
ch=getc(fp); //读取字符
printf("%c",ch); //输出该字符
fclose(fp); //关闭文件
return 0;
}
3.
#include <stdio.h>
#include <stdlib.h>
int main() //以5人为例
{
FILE *fp;
struct student{
char name[10];
char sex;
int age;
int score;
}xuesheng[5],a[5];//定义结构体
int i,max;
if((fp=fopen("cj.dat","w"))==NULL) //以只写的格式打开文件
{
printf("error");
exit(1);
}
for(i=0;i<5;i++)
{
scanf("%s %c %d %d",xuesheng[i].name,&xuesheng[i].sex,&xuesheng[i].age,&xuesheng[i].score); //输入数据
fprintf(fp,"%s %c %d %d\n",xuesheng[i].name,xuesheng[i].sex,xuesheng[i].age,xuesheng[i].score); //将数据转到文件
}
fclose(fp); //关闭文件
if((fp=fopen("cj.dat","r"))==NULL) //以只读打开文件
{
printf("error");
exit(1);
}
for(i=0;i<5;i++) //利用循环将文件里的数据存在a结构体中
fscanf(fp,"%s %c %d %d",a[i].name,&a[i].sex,&a[i].age,&a[i].score);
max=a[0].score;
for(i=1;i<5;i++)//找最大值
{
if(a[i].score>max)
max=a[i].score;
}
fclose(fp); //关闭文件
printf("%d",max); //输出最大值
return 0;
}
四、实验的分析与思考
前两个实验主要是对文件函数的基本应用。
第三个实验要先用只写的格式打开,先大数据输入进去在转入文件,关闭文件再用只读的格式打开读取文件中的数据存入结构体数组中,在找出最大值输出。较为综合。