AddressBook.h
#pragma once
#include<stdio.h>
#include<stddef.h>
//定义两个结构体
#define NAME_SIZE 200
#define PHONE_SIZE 200
#define ADDR_SIZE 200
typedef struct PersonInfo {
char name[NAME_SIZE];
char phone[PHONE_SIZE];
char addr[ADDR_SIZE];
}PersonInfo;
typedef struct AddrBook {
PersonInfo* data;
size_t size;
size_t capacity;
}AddrBook;
#define DEFSULT_SZ 5
//初始化通讯录
void InitContact(AddrBook* addr);
//对通讯录进行扩容
void CheckCapacity(AddrBook* addr);
//在通讯录中增加条目
void AddContact(AddrBook* addr);
//通过姓名查找,如果有返回数组下标
int FindContactWithName(AddrBook* addr, char* name);
//通过电话号码查找,如果有就返回下标
int FindContactWithPhoneNumber(AddrBook* addr, char* phonenumber);
//删除通讯录中的联系人信息
void DeleteContact(AddrBook* addr);
//打印通讯录中所有联系人信息
void AddrBookDisplay(AddrBook* addr);
//打印单个联系人
void PrintSingleContact(AddrBook* addr, int index);
//按规则查找指定联系人
void AddrBookFind(AddrBook* addr);
//销毁通讯录
void AddrBookDestory(AddrBook* addr);
//修改通讯录中某个联系人的信息
void AddrBookModify(AddrBook* addr);
AddressBook.c
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#include"AddressBook.h"
void InitContact(AddrBook* addr) {
if (addr == NULL) {
return;
}
addr->size = 0;
addr->data = (AddrBook*)malloc(DEFSULT_SZ *sizeof(AddrBook));
if (addr->data == NULL) {
printf("初始化失败!");
return;
}
addr->capacity = DEFSULT_SZ;
}
void CheckCapacity(AddrBook* addr) {
if (addr == NULL) {
return;
}
//通讯录的大小已经等于容量了
if (addr->size == addr-&