引言
通讯录是C语言中非常简单且实用的小项目,涉及C语言中很多基础知识,能够独立写出通讯录这个小项目,证明自身对C语言知识有了一定的掌握。今天来探讨通讯录三种版本的实现
一、静态版通讯录
contact.h
pragma once 是防止头文件在程序运行时在内存的反复调用
string.h 头文件是调用字符串函数
stdio.h 就不必多说了
assert.h 头文件是在引用assert函数,防止一些指针为NULL,影响程序运行
enum 是用来枚举出通信录八大主功能,增加代码可读性和规范性
在contact.h里面直接将contact.c中大量出现的变量进行定义,之后遇到这些变量就不用重复定义了,提高代码效率
创建一个结构体,存放联系人信息
再创建一个结构体
data [MAX] 是一个能存放1000个Ploinfo(也就是上一个结构体)信息的数组
sz是用来纪录联系人个数
- #pragma once
- #include<string.h>
- #include<stdio.h>
- #include<assert.h>
- //类型的声明
- enum Option
- {
- EXIT,
- ADD,
- DEL,
- SEARCH,
- MODIFY,
- PRINT,
- CLEAR,
- SORT
- };
- #define MAX 1000
- #define NAME_MAX 20
- #define SEX_MAX 5
- #define ADDR_MAX 30
- #define TELE_MAX 12
- typedef struct Ploinfo
- {
- char name[NAME_MAX]; //姓名
- char sex[SEX_MAX]; //性别
- int age; //年龄
- char addr[ADDR_MAX]; //地址
- char tele[TELE_MAX]; //电话号码
- }Ploinfo;
- typedef struct Contact
- {
- struct Ploinfo data[MAX]; //存放联系人的数组
- int sz; //统计联系人的个数
- }Contact;
- //函数的声明
- //contact 初始化
- void InitContact(Contact* pc);
- //Contact 增加联系人的信息
- void AddContact(Contact* pc);
- //Contact 打印联系人的信息
- void PrintContact(const Contact* pc);//只是打印,不会改变Contact里面的数据,所以可以const来修饰
- //Contact 删除指定联系人
- void DelContact(Contact* pc);
- //Contact 查找指定联系人
- void SearchContact(Contact* pc);
- //Contact 修改指定联系人信息
- void ModifyContact(Contact* pc);
- //Contact 通讯录信息排序
- void sortContact(Contact* pc);
- //Contact 通讯录信息清空
- void ClearContact(Contact* pc);
复制代码
contact.h
contact.h是我们自主创建的头文件,里面包含了我们运行contact.c需要的所有头文件和变量
在contact.c开头只需要引用这一个contact.h头文件就行了
InitContact函数是用来初始化通讯录的,在添加联系人信息之前,需要把data和sz全都初始化为0
assert是防止pc为NULL
memset是字符串函数,这里的作用是把data [MAX] 里面的空间全部设置为0
AddContact函数是用来添加联系人信息的
在添加之前需确认通讯录空间是否足够,如果不够是无法添加的
|