编写一个编程通讯录的代码涉及多个步骤,包括定义结构体、实现功能函数、编写主函数以及处理用户输入。以下是一个简单的C语言通讯录程序示例,它展示了如何实现添加、删除、查找、显示和退出等基本功能。
1. 定义结构体
首先,我们需要定义一个结构体来存储联系人的信息。
```c
include include include define MAX_NAME_LENGTH 20 define MAX_PHONE_LENGTH 15 define MAX_ADDRESS_LENGTH 100 typedef struct { char name[MAX_NAME_LENGTH]; char phone[MAX_PHONE_LENGTH]; char address[MAX_ADDRESS_LENGTH]; int age; } Contact; typedef struct { Contact* contacts; int size; int capacity; } AddressBook; ``` 2. 初始化通讯录 接下来,我们需要一个函数来初始化通讯录。 ```c void initAddressBook(AddressBook* book) { book->contacts = (Contact*)malloc(INITIAL_SIZE * sizeof(Contact)); book->size = 0; book->capacity = INITIAL_SIZE; } ``` 3. 添加联系人 实现添加联系人的功能。 ```c void addContact(AddressBook* book, const char* name, const char* phone, const char* address, int age) { if (book->size >= book->capacity) { book->capacity *= 2; book->contacts = (Contact*)realloc(book->contacts, book->capacity * sizeof(Contact)); } Contact newContact = {0}; strncpy(newContact.name, name, MAX_NAME_LENGTH); strncpy(newContact.phone, phone, MAX_PHONE_LENGTH); strncpy(newContact.address, address, MAX_ADDRESS_LENGTH); newContact.age = age; book->contacts[book->size++] = newContact; } ``` 4. 查找联系人 实现通过名字查找联系人的功能。 ```c int findContactByName(AddressBook* book, const char* name) { for (int i = 0; i < book->size; i++) { if (strcmp(book->contacts[i].name, name) == 0) { return i; } } return -1; } ``` 5. 删除联系人 实现删除联系人的功能。 ```c void deleteContact(AddressBook* book, const char* name) { int index = findContactByName(book, name); if (index != -1) { for (int i = index; i < book->size - 1; i++) { book->contacts[i] = book->contacts[i + 1]; } book->size--; } } ``` 6. 显示联系人 实现显示所有联系人的功能。 ```c void displayContacts(AddressBook* book) { for (int i = 0; i < book->size; i++) { printf("Name: %s, Phone: %s, Address: %s, Age: %d\n", book->contacts[i].name, book->contacts[i].phone, book->contacts[i].address, book->contacts[i].age); } } ``` 7. 主函数 在主函数中,我们可以实现一个简单的菜单,让用户选择不同的操作。