写一份能够实现录入与查询功能的通讯录代码
时间: 2024-12-24 14:23:10 浏览: 3
为了创建一个简单的通讯录程序,我们可以使用结构体来存储联系人信息,以及动态数组或链表来存储这些联系人。以下是一个基本的C语言实现示例:
```c
#include <stdio.h>
#include <stdlib.h>
#define MAX_ENTRIES 10 // 限制最大联系人数
// 定义一个结构体来表示联系人
typedef struct {
char name[50];
char phone_number[20];
} Contact;
// 动态数组来存放联系人
Contact* contacts = NULL;
int num_entries = 0;
// 添加联系人
void add_contact(char* name, char* phone_number) {
if (num_entries == MAX_ENTRIES) {
printf("已达到最大联系人数量,无法添加更多。\n");
return;
}
Contact* new_entry = malloc(sizeof(Contact));
if (new_entry != NULL) {
strcpy(new_entry->name, name);
strcpy(new_entry->phone_number, phone_number);
contacts = realloc(contacts, sizeof(Contact) * (num_entries + 1));
contacts[num_entries] = *new_entry; // 将新联系人添加到数组尾部
num_entries++;
} else {
printf("内存分配失败。\n");
}
}
// 查询联系人
void search_contact(char* query) {
for (int i = 0; i < num_entries; i++) {
if (strstr(contacts[i].name, query) || strstr(contacts[i].phone_number, query)) {
printf("姓名: %s\n电话号码: %s\n", contacts[i].name, contacts[i].phone_number);
}
}
if (!num_entries) {
printf("未找到匹配的联系人。\n");
}
}
// 主函数
int main() {
while (1) {
int choice;
printf("\n通讯录选项:\n1. 添加联系人\n2. 搜索联系人\n3. 退出\n");
scanf("%d", &choice);
switch (choice) {
case 1:
char name[50], phone_number[20];
printf("请输入联系人的名字和电话号码:\n");
fgets(name, sizeof(name), stdin); // 去除末尾换行符
fgets(phone_number, sizeof(phone_number), stdin);
add_contact(name, phone_number);
break;
case 2:
char search_query[20];
printf("请输入要搜索的名字或电话号码:\n");
fgets(search_query, sizeof(search_query), stdin);
search_contact(search_query);
break;
case 3:
printf("感谢使用通讯录程序!\n");
exit(0);
default:
printf("无效选择,请重新输入。\n");
}
}
return 0;
}
```
这个程序提供了添加联系人和根据名字或电话号码搜索的功能。请注意,在实际项目中,可能需要更完善的错误处理和用户界面。
阅读全文