您好,登录后才能下订单哦!
密码登录
登录注册
点击 登录注册 即表示同意《亿速云用户服务条款》
# 怎么用C语言实现一个电话簿
电话簿是日常生活中常见的工具,用于存储和管理联系人信息。本文将介绍如何使用C语言实现一个简单的电话簿程序,涵盖数据结构设计、基本功能实现和代码示例。
---
## 一、数据结构设计
电话簿的核心是联系人信息的存储。我们可以使用结构体来表示每个联系人:
```c
typedef struct {
char name[50];
char phone[20];
char email[50];
} Contact;
为了管理多个联系人,可以使用动态数组或链表。这里选择动态数组:
typedef struct {
Contact *contacts; // 联系人数组
int count; // 当前联系人数量
int capacity; // 数组容量
} Phonebook;
void initPhonebook(Phonebook *pb, int initialCapacity) {
pb->contacts = (Contact*)malloc(initialCapacity * sizeof(Contact));
pb->count = 0;
pb->capacity = initialCapacity;
}
void addContact(Phonebook *pb, const char *name, const char *phone, const char *email) {
if (pb->count >= pb->capacity) {
// 动态扩容
pb->capacity *= 2;
pb->contacts = (Contact*)realloc(pb->contacts, pb->capacity * sizeof(Contact));
}
Contact *c = &pb->contacts[pb->count++];
strncpy(c->name, name, 49);
strncpy(c->phone, phone, 19);
strncpy(c->email, email, 49);
}
Contact* findContact(Phonebook *pb, const char *name) {
for (int i = 0; i < pb->count; i++) {
if (strcmp(pb->contacts[i].name, name) == 0) {
return &pb->contacts[i];
}
}
return NULL;
}
void deleteContact(Phonebook *pb, const char *name) {
for (int i = 0; i < pb->count; i++) {
if (strcmp(pb->contacts[i].name, name) == 0) {
// 将最后一个联系人移到当前位置
pb->contacts[i] = pb->contacts[--pb->count];
return;
}
}
}
void displayContacts(Phonebook *pb) {
printf("Total contacts: %d\n", pb->count);
for (int i = 0; i < pb->count; i++) {
printf("%d. %s, %s, %s\n",
i+1,
pb->contacts[i].name,
pb->contacts[i].phone,
pb->contacts[i].email);
}
}
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
// 上述结构体和函数定义...
int main() {
Phonebook pb;
initPhonebook(&pb, 10);
int choice;
char name[50], phone[20], email[50];
while (1) {
printf("\nPhonebook Menu:\n");
printf("1. Add Contact\n");
printf("2. Find Contact\n");
printf("3. Delete Contact\n");
printf("4. Display All\n");
printf("5. Exit\n");
printf("Enter choice: ");
scanf("%d", &choice);
switch(choice) {
case 1:
printf("Enter name, phone, email: ");
scanf("%s %s %s", name, phone, email);
addContact(&pb, name, phone, email);
break;
case 2:
printf("Enter name to search: ");
scanf("%s", name);
Contact *c = findContact(&pb, name);
if (c) printf("Found: %s, %s\n", c->phone, c->email);
else printf("Not found\n");
break;
case 3:
printf("Enter name to delete: ");
scanf("%s", name);
deleteContact(&pb, name);
break;
case 4:
displayContacts(&pb);
break;
case 5:
free(pb.contacts);
return 0;
default:
printf("Invalid choice\n");
}
}
}
fread/fwrite
实现数据持久化通过这个简单的实现,我们展示了C语言在小型应用开发中的能力。虽然代码量不大,但涵盖了内存管理、数据结构、用户交互等核心编程概念。读者可以在此基础上继续扩展功能,打造更完善的电话簿程序。 “`
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。