C语言实现通讯录(动态版)

用C语言实现一个具有下列功能的通讯录(动态版):
1.添加联系人
2.删除联系人
3.修改联系人信息
4.查找联系人
5.显示所有联系人信息
6.清空所有联系人
8.将联系人信息保存在文件中
9.加载联系人
由于验证动态分配内存是否有效,我把size(通讯录的容量大小)初始化为1了,每次扩容增加到原来容量的2倍

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <errno.h>
#include <malloc.h>

struct address_info
{
	char name[20];//姓名
	char sex[5];//性别
	char age[5];//年龄
	char phone[20];//电话
	char address[100];//地址
};
typedef struct address_info * pinfo;//将结构体指针类型命名为pinfo
int mumbers = 0;//记录联系人的总人数
int size = 1;//记录通讯录的规模大小
int sizeOfStruct = sizeof(struct address_info);//记录结构体大小
//下面都是函数声明
int namecmp(char name1[], char name2[]);
void view_someone(pinfo *address_book, int num);
int find_is(pinfo *address_book, char input_name[]);
void input_info(pinfo *address_book, int num);
void delete_info(pinfo *address_book, char input_name[], int i);
void init(pinfo *address_book);
void add_contact(pinfo *address_book);
void delete_contact(pinfo *address_book);
void find_contact(pinfo *address_book);
void modify_contact(pinfo *address_book);
void viewAll_contact(pinfo *address_book);
void emptyAll_contact(pinfo *address_book);
void sortAll_contact(pinfo *address_book);
void save_contact(pinfo *address_book);
void load_contact(pinfo *address_book);
int expandCapacity(pinfo *address_book);

//[辅助函数]通讯录扩容
int expandCapacity(pinfo *paddress_book)
{
	pinfo p = (pinfo)realloc(*paddress_book, sizeOfStruct * (mumbers * 2));
	if (*paddress_book != NULL)
	{
		*paddress_book = p;
		size = 2 * mumbers;
		printf("expand capacity sucessful!\n");
		return 1;
	}
	else
	{
		printf("failed!\n");
		return 0;
	}
}
//[辅助函数]字典序比较姓名大小
int namecmp(char name1[], char name2[])
{
	int result = -(strcmp(name1, name2)
  • 3
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值