用C写一个手机通讯录
时间: 2023-08-30 08:12:13 浏览: 64
首先,我们需要定义通讯录中一个联系人的结构体,包括姓名、电话号码和电子邮件地址:
```
#include <stdio.h>
#include <string.h>
#define MAX_NAME_LEN 50
#define MAX_PHONE_LEN 20
#define MAX_EMAIL_LEN 50
struct contact {
char name[MAX_NAME_LEN];
char phone[MAX_PHONE_LEN];
char email[MAX_EMAIL_LEN];
};
```
接下来,我们需要实现添加联系人、查找联系人、显示所有联系人、编辑联系人和删除联系人等功能。下面是一个简单的通讯录程序示例:
```
#include <stdio.h>
#include <string.h>
#define MAX_NAME_LEN 50
#define MAX_PHONE_LEN 20
#define MAX_EMAIL_LEN 50
#define MAX_CONTACTS 100
struct contact {
char name[MAX_NAME_LEN];
char phone[MAX_PHONE_LEN];
char email[MAX_EMAIL_LEN];
};
struct contact contacts[MAX_CONTACTS];
int num_contacts = 0;
void add_contact() {
if (num_contacts == MAX_CONTACTS) {
printf("通讯录已满\n");
return;
}
struct contact new_contact;
printf("请输入姓名:");
fgets(new_contact.name, MAX_NAME_LEN, stdin);
new_contact.name[strcspn(new_contact.name, "\n")] = '\0'; // 去掉换行符
printf("请输入电话号码:");
fgets(new_contact.phone, MAX_PHONE_LEN, stdin);
new_contact.phone[strcspn(new_contact.phone, "\n")] = '\0'; // 去掉换行符
printf("请输入电子邮件地址:");
fgets(new_contact.email, MAX_EMAIL_LEN, stdin);
new_contact.email[strcspn(new_contact.email, "\n")] = '\0'; // 去掉换行符
contacts[num_contacts++] = new_contact;
printf("联系人已添加\n");
}
void find_contact() {
char name[MAX_NAME_LEN];
printf("请输入要查找的姓名:");
fgets(name, MAX_NAME_LEN, stdin);
name[strcspn(name, "\n")] = '\0'; // 去掉换行符
for (int i = 0; i < num_contacts; i++) {
if (strcmp(contacts[i].name, name) == 0) {
printf("姓名:%s\n电话号码:%s\n电子邮件地址:%s\n",
contacts[i].name, contacts[i].phone, contacts[i].email);
return;
}
}
printf("未找到联系人\n");
}
void list_contacts() {
if (num_contacts == 0) {
printf("通讯录为空\n");
return;
}
for (int i = 0; i < num_contacts; i++) {
printf("%d. 姓名:%s\n 电话号码:%s\n 电子邮件地址:%s\n",
i + 1, contacts[i].name, contacts[i].phone, contacts[i].email);
}
}
void edit_contact() {
char name[MAX_NAME_LEN];
printf("请输入要编辑的联系人姓名:");
fgets(name, MAX_NAME_LEN, stdin);
name[strcspn(name, "\n")] = '\0'; // 去掉换行符
for (int i = 0; i < num_contacts; i++) {
if (strcmp(contacts[i].name, name) == 0) {
printf("请输入新的电话号码:");
fgets(contacts[i].phone, MAX_PHONE_LEN, stdin);
contacts[i].phone[strcspn(contacts[i].phone, "\n")] = '\0'; // 去掉换行符
printf("请输入新的电子邮件地址:");
fgets(contacts[i].email, MAX_EMAIL_LEN, stdin);
contacts[i].email[strcspn(contacts[i].email, "\n")] = '\0'; // 去掉换行符
printf("联系人已更新\n");
return;
}
}
printf("未找到联系人\n");
}
void delete_contact() {
char name[MAX_NAME_LEN];
printf("请输入要删除的联系人姓名:");
fgets(name, MAX_NAME_LEN, stdin);
name[strcspn(name, "\n")] = '\0'; // 去掉换行符
for (int i = 0; i < num_contacts; i++) {
if (strcmp(contacts[i].name, name) == 0) {
for (int j = i; j < num_contacts - 1; j++) {
contacts[j] = contacts[j + 1];
}
num_contacts--;
printf("联系人已删除\n");
return;
}
}
printf("未找到联系人\n");
}
int main() {
int choice;
do {
printf("\n");
printf("请选择操作:\n");
printf("1. 添加联系人\n");
printf("2. 查找联系人\n");
printf("3. 显示所有联系人\n");
printf("4. 编辑联系人\n");
printf("5. 删除联系人\n");
printf("6. 退出程序\n");
printf(">> ");
scanf("%d", &choice);
getchar(); // 去掉输入缓冲区中的换行符
switch (choice) {
case 1: add_contact(); break;
case 2: find_contact(); break;
case 3: list_contacts(); break;
case 4: edit_contact(); break;
case 5: delete_contact(); break;
case 6: break;
default: printf("无效的选择\n");
}
} while (choice != 6);
return 0;
}
```
这个程序可以通过命令行进行交互,根据用户的选择进行相应的操作。在每个操作中,我们使用了 `fgets` 函数来读取用户输入的字符串,然后使用 `strcspn` 函数去掉输入字符串中的换行符。
相关推荐
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)