简易实现通讯录3.0 (实现文件操作)

简介: 简易实现通讯录3.0 (实现文件操作)

 本文基于上一篇动态通讯录实现:简易实现通讯录2.0

前言:

本文将在上文的基础上,实现文件保存操作,因为上文中我们发现,我们的通讯录在每次打开都需要重新输入,这很不符合我们的认知,我们的通讯录都是可以打开就直接查看某个用户的,今天我们就将用户数据写入文件,实现更真实的通讯录.

1.在退出时保存文件

首先我们在主函数选择0退出的时候加上一个写入文件的操作

下面我们开始写写入文件的操作,我们这里每次写入一条信息,以二进制方式写入.

void SaveContact(Contact* pc)
{
  FILE* pf = fopen("contact.txt", "wb");
  if (pf == NULL)
  {
    perror("SaveContact");
    return;
  }
  //写信息到文件
  int i = 0;
  for (i = 0; i < pc->sz; i++)
  {
    /*fwrite(&(pc->data[i]), sizeof(PeoInfo), 1, pf);*/
        //每次以一条信息为单位写入
    fwrite(pc->data+i, sizeof(PeoInfo), 1, pf);
  }
    //记得关闭文件
  fclose(pf);
  pf == NULL;
}

2.在初始化通讯录的时候读取文件信息写入通讯录

void  InitContact(Contact* pc)
{
  assert(pc);
  pc->sz = 0;
  pc->capacity = DEFAULT_SIZE;
  pc->data = calloc(pc->capacity, sizeof(PeoInfo));
  if (pc->data == NULL)
  {
    perror("error");
    return;
  }
  //加载文件中的信息到通讯录中
  LoadContact(pc);
}

3.加载函数的书写

这里我们先读取文件,成功读取就写入文件.

void CheckCapacity(Contact* pc);
void LoadContact(Contact* pc)
{
  //打开文件,读取文件,关闭文件
  FILE* pf = fopen("contact.txt", "rb");
  if (pf == NULL)
  {
    perror("LoadContact");
    return;
  }
  //读文件
  PeoInfo tmp = { 0 };
  while (fread(&tmp, sizeof(tmp), 1, pf))
  {
    //先判断容量
    CheckCapacity(pc);
    pc->data[pc->sz] = tmp;
    pc->sz++;
  }
  //关闭
  fclose(pf);
  pf == NULL;
}

4.实验

这里可以看到我们上次保存的数据了,代码分享见秋秋的代码仓库

相关文章
|
9月前
|
数据管理
【通讯录项目 (3 / 3)】基于顺序表的通讯录实现——通讯录项目实现
通讯录项目我们实现了大部分内容,接下来你可以自行探索,丰富功能。
68 0
|
9月前
|
C语言
C语言——通讯录实现(增删查改+动态管理+文件操作)
C语言——通讯录实现(增删查改+动态管理+文件操作)
|
存储 C++
C/C++文件操作————写文件与读文件以及通讯录的改进 (保姆级教学)
C/C++文件操作————写文件与读文件以及通讯录的改进 (保姆级教学)
90 0
通讯录系统
通讯录系统头文件:
54 0
|
C语言 Windows
C语言实现通讯录【文件版】——存档联系人信息
C语言实现通讯录【文件版】——存档联系人信息
通讯录的8种功能的具体实现和整个程序的代码
具体详细讲解看上一个博客(贼细) 1.头文件(声明各种函数和定义各种类型的地方) 2.测试文件(main函数所在,代码开始的地方) 3.函数实现文件(8种功能的具体实现,每一个函数都是独立实现,无嵌套使用) 4.以上你可以写在一个文件中也可以写在不同文件中
|
C语言
C语言-文件操作-文件改造通讯录(13.2)
C语言-文件操作-文件改造通讯录(13.2)
76 0
|
容器
通讯录(文件版)
通讯录(文件版)
138 0
通讯录(文件版)
【基于动态内存+文件操作】通讯录管理系统
前言 对于一个通讯录管理系统来说,较为重要的是清楚具体需要什么功能以及每一块功能的实现。 下面,实现一个通讯录,该通讯录能够进行联系人的添加,删除,查找,修改,展示,排序,保存,销毁,等功能。 我们知道,一个联系人有以下基本信息:联系人姓名,年龄,性别,电话,住址等。 所以下面来实现功能时,按照每一个功能逐一实现即可。
|
存储 Java 编译器