请求提供一个使用C语言编写的通讯录管理系统的示例代码
时间: 2024-10-28 15:10:04 浏览: 10
在C语言中编写一个简单的通讯录管理系统,我们通常会创建结构体存储联系人信息,使用数组或动态内存分配来存储多个记录,并提供一些基本的操作如添加、删除和查找。下面是一个非常基础的示例,这里只包含一个联系人结构体和几个基本函数:
```c
#include <stdio.h>
#include <stdlib.h>
// 定义联系人结构体
typedef struct {
char name[50];
char phone[20];
} Contact;
// 动态内存分配新的联系人
Contact* create_contact(char* name, char* phone) {
Contact* new_contact = (Contact*)malloc(sizeof(Contact));
if (new_contact != NULL) {
strcpy(new_contact->name, name);
strcpy(new_contact->phone, phone);
}
return new_contact;
}
// 添加新联系人
void add_contact(Contact** contacts, int* count, char* name, char* phone) {
Contact* new_contact = create_contact(name, phone);
if (new_contact != NULL) {
*count += 1;
*contacts = (Contact**)realloc(*contacts, (*count+1) * sizeof(Contact*));
if (*contacts != NULL) {
(*contacts)[*count - 1] = new_contact;
} else {
printf("Memory allocation failed.\n");
free(new_contact);
}
}
}
// 删除指定联系人
void delete_contact(Contact** contacts, int* count, int index) {
if (index >= 0 && index < *count) {
Contact* to_delete = (*contacts)[index];
memmove((*contacts) + index, (*contacts) + index + 1, (*count - index - 1) * sizeof(Contact*));
free(to_delete);
*count -= 1;
} else {
printf("Invalid index.\n");
}
}
// 查找并打印名字
void search_contact(Contact* contacts, int count, char* name) {
for (int i = 0; i < count; i++) {
if (strcmp(contacts[i].name, name) == 0) {
printf("Name: %s, Phone: %s\n", contacts[i].name, contacts[i].phone);
break;
}
}
}
int main() {
Contact* contacts = NULL;
int count = 0;
// 示例操作:添加、删除和搜索联系人
add_contact(&contacts, &count, "Alice", "1234567890");
add_contact(&contacts, &count, "Bob", "0987654321");
search_contact(contacts, count, "Alice"); // 查找Alice
delete_contact(&contacts, &count, 0); // 删除第一个联系人
// 其他联系人代码...
return 0;
}
```
这个例子是一个起点,实际应用中你可能会想要加入错误处理、循环遍历等功能,以及用户输入交互界面。同时,如果你需要长期保存数据,考虑将数据文件化或数据库化。
阅读全文