通讯录的编程可以通过以下步骤实现:
定义数据结构
确定用来存储联系人信息的数据结构,一般会包含姓名、电话号码等基本信息。可以使用结构体来定义联系人信息,例如:
```c
typedef struct Contact {
char name;
char phone;
} Contact;
```
初始化通讯录
为通讯录分配内存空间,设定初始的联系人数量等相关属性。例如:
```c
typedef struct AddressBook {
Contact *contacts; // 指向联系人数组的指针
int size; // 当前联系人数量
int capacity; // 通讯录容量
} AddressBook;
AddressBook initAddressBook(int capacity) {
AddressBook book;
book.contacts = (Contact *)malloc(capacity * sizeof(Contact));
book.size = 0;
book.capacity = capacity;
return book;
}
```
实现功能
添加联系人:接收用户输入的联系人信息,将其存入通讯录的数据结构中。例如:
```c
void addContact(AddressBook *book, const char *name, const char *phone) {
if (book->size >= book->capacity) {
// 扩展通讯录容量
book->capacity *= 2;
book->contacts = (Contact *)realloc(book->contacts, book->capacity * sizeof(Contact));
}
strcpy(book->contacts[book->size].name, name);
strcpy(book->contacts[book->size].phone, phone);
book->size++;
}
```
显示联系人:遍历通讯录中的联系人数据,将每个联系人的信息输出显示。例如:
```c
void displayContacts(const AddressBook *book) {
for (int i = 0; i < book->size; i++) {
printf("Name: %s, Phone: %s\n", book->contacts[i].name, book->contacts[i].phone);
}
}
```
查找联系人:根据用户输入的关键信息(比如姓名),在通讯录中查找匹配的联系人并显示其详细信息。例如:
```c
int findContact(const 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; // 未找到
}
```
释放资源
在程序结束前,释放通讯录占用的内存空间。例如:
```c
void freeAddressBook(AddressBook *book) {
free(book->contacts);
}
```
示例代码