用C语言编写一个简单的通讯录代码
时间: 2024-09-12 21:09:34 浏览: 38
在C语言中,我们可以创建一个简单的通讯录程序,它包含一个结构体来表示联系人,以及几个函数来进行添加、删除和查找联系人。这是一个基础的例子:
```c
#include <stdio.h>
#include <stdlib.h>
// 定义联系人结构体
typedef struct {
char name[50];
char phone[20];
} Contact;
// 函数声明
Contact* add_contact(Contact *list, int size);
void delete_contact(Contact *list, int index);
Contact* search_contact(Contact *list, const char *name);
int main() {
Contact *contact_list = NULL;
int capacity = 5; // 初始容量
int count = 0;
while (count < capacity) {
Contact new_contact;
printf("Enter contact's name: ");
fgets(new_contact.name, sizeof(new_contact.name), stdin);
new_contact.name[strlen(new_contact.name) - 1] = '\0'; // remove newline
printf("Enter phone number: ");
fgets(new_contact.phone, sizeof(new_contact.phone), stdin);
new_contact.phone[strlen(new_contact.phone) - 1] = '\0'; // remove newline
contact_list = add_contact(contact_list, capacity);
count++;
}
while (1) {
int choice;
printf("\n1. Add contact\n2. Delete contact\n3. Search contact\n4. Exit\n");
scanf("%d", &choice);
switch (choice) {
case 1:
// 添加联系人...
break;
case 2:
// 删除联系人...
break;
case 3:
// 搜索联系人...
break;
case 4:
exit(0); // 退出程序
break;
default:
printf("Invalid choice.\n");
break;
}
}
return 0;
}
// 添加联系人到列表
Contact* add_contact(Contact *list, int size) {
if (list == NULL) {
list = (Contact*)malloc(sizeof(Contact));
} else if (size == 0) { // 扩大列表
Contact *new_list = realloc(list, (size *= 2) * sizeof(Contact));
list = new_list;
}
list[size++] = *new_contact; // 将新联系人复制到列表末尾
return list;
}
// 删除联系人
void delete_contact(Contact *list, int index) {
if (index >= 0 && index < count) {
memmove(&list[index], &list[index + 1], sizeof(Contact) * (count - index - 1)); // 移动元素
free(list[count]); // 释放最后一个元素的空间
count--;
}
}
// 搜索联系人
Contact* search_contact(Contact *list, const char *name) {
for (int i = 0; i < count; i++) {
if (strcmp(list[i].name, name) == 0) {
return &list[i]; // 返回找到的联系人指针
}
}
return NULL; // 如果未找到,则返回NULL
}
```
这个例子展示了如何使用C语言的基本数据结构和内存管理来构建一个简单的通讯录功能。用户可以选择添加、删除或搜索联系人。注意,这里没有处理所有错误情况,实际应用中需要加入更多的错误检查。
阅读全文