200822C阶段一文件

一、学习的知识点

文件

定义

文件一般指存储在外部介质(如磁盘磁带)上数据的集合。操作系统是以文件为单位对数据进行管理的。从操作系统的角度看,每一个与主机相连的输入输出设备看作是一个文件。

文件的操作

在缓冲文件系统中,每个被使用的文件都要在内存中开辟一FILE类型的区,存放文件的有关信息。stdio.h 中定义了一个称为 FILE 的结构.

	FILE *fp; //文件指针指向一个结构
	fp=fopen("data.txt","r+"); //返回文件类型的指针
	//r+ 如果打开一个不存在的文件,返回NULL;打开一个存在的文件,打开成功不会新建
	//w+ 如果打开一个不存在的文件,建立一个新的文本文件;打开一个存在的文件,也会新建
	if(fp == NULL)
	{
		文件打开失败
		fp=fopen("data.txt","w+");
	}
	printf("文件打开成功");

	//将内存数据写入到文件,成功返回写入单元个数,失败返回0,写入后指针自动偏移
	res=fwrite(&menu[0],sizeof(MENUL_T),2,fp);
	//1.要写的数据地址 2.写入单元的大小 3.写入的单元个数 4.写入的文件指针
	fflush(fp); //刷新,将写入的数据保存到文件中

	fseek(fp,2*sizeof(MENU_T),0);
	//指针偏移1.文件指针 2.偏移量 3.指针偏移0-从头偏移 1-从当前位置 2-从尾巴

	rewind(fp); //文件指针定位到头
	
	//从文件读取数据到内存中,成功返回读取的单元个数,失败返回0,读取后指针自动偏移
	res=fread(&menu[3],sizeof(MENU_T),1,fp); //读出数据,从fp指向的文件读取数据存入到user[1]
	//1.读出数据要保存的地址 2.读出单元的大小 3.读出的单元数 4.要读取的文件的指针
	
	fclose(fp);//关闭文件

文件相关的封装函数

//打开或新建一个文件
FILE *file_open(char *name)
{
	//定义一个文件类型的指针,返回指针
	FILE *fp=NULL;
	fp=fopen(name,"rb+"); //r+:打开一个不存在的文件,返回NULL,打开成功返回文件指针
	if(fp == NULL)
	{
		fopen(name,"wb+");//w+ 如果打开一个不存在的文件,建立一个新的文本文件;打开一个存在的文件,也会新建
	}
	return fp;
}

/*
函数功能:从文件里面读取数据保存到链表中
函数参数:文件指针,服务每一块数据单元的大小,(菜谱、员工、台桌)
*/
void *File_read(FILE * fp,int size)
{
	//创建链表
	LIST_T *head=NULL;
	void *data=NULL; //保存数据的地址
	head=List_Init();
	data=malloc(size);
	memset(data,0,size);
	//从文件读取数据,不知道文件有多少数据,使用循环读取
	while(fread(data,size,1,fp))
	{
		//存入链表
		List_Add(head,data);
		//重新开空间并初始化
		data=malloc(size);
		memset(data,0,size);
	}
	return head;
}

//将整条链表中的数据写入文件
void File_write(FILE * fp,int size,LIST_T *head)
{
	LIST_T *ptemp=head->pnext;
	rewind(fp);
	while(ptemp != NULL)
	{
		fwrite(ptemp->pdata,size,1,fp);
		fflush(fp);
		ptemp=ptemp->pnext;
	}
}

二、上课没有听懂或者没有理解的地方

三、当天学习的收获

学会了使用文件永久保存数据

四、作业的思路、不会的地方

按上课讲的思路写

五、其他需要反馈的问题

六、心得体会

最近学了挺多新知识,要好好消化理解

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值