C语言 基于文件的程序设计(PTA)

一、实验目的

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;
}

四、实验的分析与思考

前两个实验主要是对文件函数的基本应用。

第三个实验要先用只写的格式打开,先大数据输入进去在转入文件,关闭文件再用只读的格式打开读取文件中的数据存入结构体数组中,在找出最大值输出。较为综合。

 

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

努力敲代码呀~

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值