用c语言写一个通讯录
时间: 2023-11-15 15:04:09 浏览: 43
下面是用 C 语言实现通讯录的示例代码:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX_NAME_LEN 50
#define MAX_PHONE_LEN 20
typedef struct {
char name[MAX_NAME_LEN];
char phone[MAX_PHONE_LEN];
} Contact;
typedef struct {
Contact *contacts;
int size;
int capacity;
} AddressBook;
AddressBook *create_address_book(int capacity) {
AddressBook *book = (AddressBook *)malloc(sizeof(AddressBook));
book->contacts = (Contact *)malloc(capacity * sizeof(Contact));
book->size = 0;
book->capacity = capacity;
return book;
}
void destroy_address_book(AddressBook *book) {
free(book->contacts);
free(book);
}
void add_contact(AddressBook *book, Contact *contact) {
if (book->size >= book->capacity) {
book->capacity *= 2;
book->contacts = (Contact *)realloc(book->contacts, book->capacity * sizeof(Contact));
}
book->contacts[book->size++] = *contact;
printf("Contact added successfully.\n");
}
void print_contact(Contact *contact) {
printf("%s: %s\n", contact->name, contact->phone);
}
void print_address_book(AddressBook *book) {
printf("Address Book:\n");
for (int i = 0; i < book->size; i++) {
print_contact(&book->contacts[i]);
}
}
int main() {
AddressBook *book = create_address_book(10);
Contact contact;
while (1) {
printf("Enter name (or 'quit' to exit): ");
scanf("%s", contact.name);
if (strcmp(contact.name, "quit") == 0) {
break;
}
printf("Enter phone number: ");
scanf("%s", contact.phone);
add_contact(book, &contact);
}
print_address_book(book);
destroy_address_book(book);
return 0;
}
```
这个通讯录程序使用一个结构体 `Contact` 存储每个联系人的姓名和电话号码,使用另一个结构体 `AddressBook` 存储所有联系人。`create_address_book()` 函数用于创建一个新的通讯录,`add_contact()` 函数用于添加一个联系人,`print_address_book()` 函数用于打印整个通讯录,`destroy_address_book()` 函数用于销毁通讯录并释放内存。在 `main()` 函数中,我们可以通过循环来不断添加联系人,输入 `quit` 结束输入。