C语言实现简易通讯录3.0(通讯录信息可以向文件写入,从文件读取)

我们在前文中介绍了如何实现简易通讯录
后来又改进了通讯录,使之可以进行动态内存管理。
但是,我们的通讯录程序是只能一次性使用的,退出程序所有的内容都消失了,那么本文就来实现将通讯录的数据写入到硬盘上的文件。再次打开程序时,再从文件上读取数据。实现数据的持久性。

代码如下:

addressBook.h文件

#pragma once

//头文件

#include <stdio.h>
#include <string.h>
#include <stdlib.h>

#define MAX_NAME 20
#define MAX_SEX 6
#define MAX_TELE 12
#define MAX_ADDR 20
#define MAX 1000

#define INIT_SZ 3
#define CAP_ADD 2

enum fun
{
   
	EXIT,//从0开始,EXIT = 0
	ADD,//1
	DEL,//2
	SEARCH,//3
	MODIFY,//4
	PRINT,
	SORT,
	DESTORY
};



//个人信息结构体:
typedef struct PeoInfo
{
   
	char name[MAX_NAME];
	int age;
	char sex[MAX_SEX];
	char tele[MAX_TELE];
	char addr[MAX_ADDR];
}PeoInfo;

通讯录结构体:静态版本
//typedef struct Book
//{
   
//	PeoInfo data[MAX];//
//	int size;//记录当前通讯录中有效的信息个数
//}Book;

//通讯录结构体:动态版本
typedef struct Book
{
   
	PeoInfo* data;//动态版本:记录个人信息
	int size;//记录当前通讯录中有效的信息个数
	int cap;//记录当前的最大容量,以便满了通过动态内存管理来扩充
}Book;

//菜单函数声明:
void menu(void);
void menu_ins(void);

//初始化通讯录函数声明
void InitMsg(Book*);

//增加通讯录信息函数声明:
void AddMsg(Book* );

//打印通讯录信息函数声明:
void PrintMsg(Book* );

//删除通讯录信息函数声明:
void DelMsg(Book* );

//查找通讯录信息函数声明:
void SearchMsg(Book*);

//修改通讯录信息函数声明:
void ModMsg(Book*);

//排序通讯录信息函数声明:
void SortMsg(Book*);

//通讯录动态空间释放函数声明:
void DestroyMsg(Book*);

//检查是否需要增容:
void CheckCap(Book* pc);

//保存通讯录信息到文件中的函数声明:
void SaveMsg(Book*);

//程序打开,初始化通讯录时,加载文件中的数据到通讯录中函数声明:
void LoadMsg(Book*);

//删除文件中通讯录信息,清空通讯录文件
void nothing(Book* pc);

addressBook.c文件

//
//本文件包括  各功能函数:


#include "addressBook.h"

//菜单显示:
void menu()
{
   
	printf("********************************\n");
	printf("******  1.增加    2.删去  ******\n");
	printf("******  3.搜索    4.修改   *****\n");
	printf("******  5.浏览    6.排序   *****\n");
	printf("******  0.退出    7.销毁  *******\n");
	printf("********************************\n");
}
//菜单说明:
void menu_ins()
{
   
	printf("菜单说明\n");
	printf("增加:增加通讯录信息\n");
	printf("删去:输入姓名,删去该姓名对应的通讯录信息\n");
	printf("搜索:输入姓名,搜索并打印该姓名对应的通讯录信息\n");
	printf("修改:输入姓名,修改该姓名对应的通讯录信息\n");
	printf("浏览:打印出全部通讯录信息\n");
	printf("排序:根据姓名/年龄排序通讯录信息\n");
	printf("销毁:清空通讯录及文件中的数据信息\n");
}

//通过姓名来寻找某条通讯录信息函数:
static int FindByName(Book* pc, char* name)
{
   
	for (int i = 0; i < pc->size; i++)
	{
   
		
  • 0
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值