C语言 通讯录

 创建一个test.c,Contact.h,Contact.c

test.c来写main函数

Contact.h来存放通讯录函数的实现

Contact.c来存放定义

创建一个通讯录:通讯录可以用来存放100个人的信息,可以实现增删查改的功能。

创建一个框架:

int main()
{
	int input=0;
	do
	{

		menu();
		printf("请选择:");
	
		scanf("%d", &input);
		switch (input)
		{

		case 1:
			break;
		case 2:
			break;
		case 3:
			break;
		case 4:
			break;
		case 5:
			break;
		case 6:
			break;
		case 0:
			break;
		default:
			break;

		}

	} while (input);

	return 0;
}

写一个menu菜单:

void menu()
{
printf("********************************\n");
printf("********1.add       2.del*******\n");
printf("********3.search    4.modify*****\n");
printf("********5.show      6.sort*******\n");
printf("********0.exit*********\n");
}

再写一个枚举,然后把分支语句里的case 用枚举的成员代替:


enum Option
{
	ADD,
	DEL,
	SEARCH,
	MODIFY,
	SHOW,
	SORT,
	EXIT,
};
		case ADD:
			break;
		case DEL:
			break;
		case SEARCH:
			break;
		case MODIFY:
			break;
		case SHOW:
			break;
		case SORT:
			break;
		case EXIT:
			break;
		default:
			break;

写一个人的结构体:

struct People
{
	char name[20];
	int age;
char sex;
char tele[12];
char adder[30];
}; 

用#define: 

#define MAX 100
#define MAX_Name 20
#define MAX_TELE 12
#define MAX_adder 30

变为: 

	char name[MAX_Name];
	int age;
char sex;
char tele[MAX_TELE];
char adder[MAX_adder];

简化:用typedef重命名整个结构体,把struct people这个类型简化为:people;

typedef struct People
{
	char name[MAX_NAME];
	int age;
char sex;
char tele[MAX_TELE];
char adder[MAX_ADDER];
}People; 

这样我们想存100个人的信息只需要调用一下people就可以了

 创建一个sz变量,增加删除一个人的信息可以改变sz的值。

sz用来记录通讯录目前有多少个人的信息。

C语言 通讯录_第1张图片

同时,每记录一个人的信息时,data数组也会变,比如我们记录了两个人的信息,data就变成了data[2]

我们把sz和data【100】整合起来,就是一个通讯录:data存放信息,sz记录变化。

在.h里面定义这个结构体

 struct Contact
{
	People data[100];
	int sz;
};

main函数里面定义的sz和people data【100】可以删除了。

用Typedef简化为Contact:

typedef struct Contact
{
	People data[100];
	int sz;
}Contact;

Contact就是我们的通讯录类型了,我们可以用这个类型来往通讯录里写信息了。

首先我们要保证通讯录里面是空的,也就是要对其进行初始化。 

C语言 通讯录_第2张图片

con是一个结构体变量,我们传形参,实参修改是不会影响形参的,所以我们传地址

 我们可以验证一下:

C语言 通讯录_第3张图片

C语言 通讯录_第4张图片

sz初始化了,接下来把data初始化 

 C语言 通讯录_第5张图片

为什么报错了呢?

因为data是一个数组,数组名就是地址,地址怎么可能初始化为0呢,我们应该对data所指向的people结构体里面存储的全部信息初始化为0

C语言 通讯录_第6张图片

 memset的用法:

C语言 通讯录_第7张图片

 C语言 通讯录_第8张图片

 调试走起来:

C语言 通讯录_第9张图片

我们可以发现data里面的数据全部初始化为0了 

你可能感兴趣的:(c语言)