当前位置:网站首页>通讯录改进即“保存”
通讯录改进即“保存”
2022-08-09 05:13:00 【潜水少年请求出战】
文件:
我们在想既然是通讯录就应该把信息记录下来,只有我们自己选择删除数据的时候,数据才不复存在。
这就涉及到了数据持久化的问题,我们一般数据持久化的方法有,把数据存放在磁盘文件、存放到数据
库等方式
使用文件我们可以将数据直接存放在电脑的硬盘上,做到了数据的持久化。
文件的打开和关闭:
缓冲文件系统中,关键的概念是“文件类型指针”,简称“文件指针”。
每个被使用的文件都在内存中开辟了一个相应的文件信息区,用来存放文件的相关信息(如文件的名
字,文件状态及文件当前的位置等)。这些信息是保存在一个结构体变量中的。该结构体类型是有系统
声明的,取名FILE
当然我们使用的时候,只知道他是个文件指针就行了。
保存方法:
首先我们知道通讯录退出的时候保存一下,所以我们可以这样做。
//保存通讯录。 void save_contact(contact* pc) { assert(pc); //打开文件 FILE* pf = fopen("contact.dat", "wb"); if (pf == NULL) { perror("Save_contact::fopen"); return; } //写文件 int i = 0; for (i = 0; i < pc->sz; i++) { fwrite(pc->pos + i, sizeof(peoInfo), 1, pf); } //关闭文件 fclose(pf); pf = NULL; }我们保存了,那么我们就需要读一下。那么在哪里读那,当然在初始化的时候。
//文件形式。 void LoadContact(contact* pc) { //打开文件。 FILE* pf = fopen("contact.dat", "rb"); if (pf == NULL) { perror("LoadContact::fopen"); return; } //读文件。 peoInfo tmp = { 0 }; while (fread(&tmp, sizeof(peoInfo), 1, pf)) { CheckCapacity(pc); pc->pos[pc->sz++] = tmp; } //关闭文件。 fclose(pf); pf = NULL; } void Init_cotact(contact* pc) { assert(pc); pc->sz = 0; pc->capacity = NUME_CAP; pc->pos = (peoInfo*)malloc(pc->capacity * sizeof(peoInfo));//堆上开辟空间。 if (pc->pos == NULL) { perror("Init_cotact::malloc"); return; } memset(pc->pos, 0, pc->capacity * sizeof(peoInfo));//初始化为0。 //加载文件信息到通讯录里面。 LoadContact(pc); }
注意(知识点):
文件使用方式 含义 如果指定文件不存在
“rb”(只读) 为了输入数据,打开一个二进制文件 出错 “wb”(只写) 为了输出数据,打开一个二进制文件 建立一个新的文件
边栏推荐
- 【HMS core】【Ads Kit】Huawei Advertising——Overseas applications are tested in China. Official advertisements cannot be displayed
- PWM输出模块PCA9685
- bean的生命周期
- 【计算机网络-哈工大】---学习笔记(下)---(二)Web安全威胁、SSL\IPsec、虚拟专用网、防火墙
- 面向6G的欠采样相移键控可见光调制方案
- Transaction rolled back because it has been marked as rollback-only
- Anonymous shared memory ashmem
- 神经网络预测应力应变-单轴实验
- 电气规则
- Docker部署MySQL
猜你喜欢
随机推荐
deploy发布的jar包中文乱码
STM32定时器输入捕获频率(cube)
电气规则
【LeetCode】287. 寻找重复数
mysql查看表的创建时间
如何一键进行Win11系统的重装?
equals和==
P8462 「REOI-1」奶油蛋糕
数字化时代,企业为什么需要商业智能BI
Docker部署MySQL
力扣202-快乐数——哈希集合
站点到站点的流量监控
力扣242-有效的字母异位词——哈希表法
Parameters in dynamic libraries cannot be modified through macro definitions or global variables in header files
Software testing method is introduced in detail
步进电机驱动的使用及程序
【HMS core】【ML kit】机器学习服务常见问题FAQ
华为鲲鹏生态培训试题
什么是ReFi?
【HMS core】【Ads Kit】Huawei Advertising——Overseas applications are tested in China. Official advertisements cannot be displayed









