一、学习的知识点
文件
定义
文件一般指存储在外部介质(如磁盘磁带)上数据的集合。操作系统是以文件为单位对数据进行管理的。从操作系统的角度看,每一个与主机相连的输入输出设备看作是一个文件。
文件的操作
在缓冲文件系统中,每个被使用的文件都要在内存中开辟一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;
}
}
二、上课没有听懂或者没有理解的地方
无
三、当天学习的收获
学会了使用文件永久保存数据
四、作业的思路、不会的地方
按上课讲的思路写
五、其他需要反馈的问题
无
六、心得体会
最近学了挺多新知识,要好好消化理解

被折叠的 条评论
为什么被折叠?



