帮我写一个拥有姓名,住址,电话号码,以及QQ号的c语言通讯录代码,以文件的形式存储,所有管理活动均以文件操作的方式进行
时间: 2024-04-11 07:27:00 浏览: 105
c语言 通讯录 代码
当然可以!下面是一个示例的C语言通讯录程序,使用文件存储联系人信息:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX_NAME_LENGTH 50
#define MAX_ADDRESS_LENGTH 100
#define MAX_PHONE_LENGTH 15
#define MAX_QQ_LENGTH 15
struct Contact {
char name[MAX_NAME_LENGTH];
char address[MAX_ADDRESS_LENGTH];
char phone[MAX_PHONE_LENGTH];
char qq[MAX_QQ_LENGTH];
};
void addContact(FILE* file) {
struct Contact newContact;
printf("请输入姓名:");
fgets(newContact.name, MAX_NAME_LENGTH, stdin);
printf("请输入住址:");
fgets(newContact.address, MAX_ADDRESS_LENGTH, stdin);
printf("请输入电话号码:");
fgets(newContact.phone, MAX_PHONE_LENGTH, stdin);
printf("请输入QQ号:");
fgets(newContact.qq, MAX_QQ_LENGTH, stdin);
fwrite(&newContact, sizeof(struct Contact), 1, file);
printf("联系人已添加成功。\n");
}
void displayContacts(FILE* file) {
struct Contact contact;
printf("通讯录列表:\n");
while (fread(&contact, sizeof(struct Contact), 1, file) == 1) {
printf("姓名:%s", contact.name);
printf("住址:%s", contact.address);
printf("电话号码:%s", contact.phone);
printf("QQ号:%s", contact.qq);
printf("\n");
}
if (feof(file)) {
printf("所有联系人已显示完毕。\n");
} else {
printf("无法读取通讯录文件。\n");
}
}
int main() {
FILE* file;
int choice;
file = fopen("contacts.dat", "ab+");
if (file == NULL) {
printf("无法打开通讯录文件。\n");
return 1;
}
do {
printf("\n通讯录程序菜单:\n");
printf("1. 添加联系人\n");
printf("2. 显示所有联系人\n");
printf("3. 退出程序\n");
printf("请输入选项:");
scanf("%d", &choice);
getchar(); // 用于清除输入缓冲区中的换行符
switch (choice) {
case 1:
addContact(file);
break;
case 2:
displayContacts(file);
break;
case 3:
printf("感谢使用通讯录程序!\n");
fclose(file);
return 0;
default:
printf("无效的选项,请重新输入。\n");
}
} while (1);
return 0;
}
```
这个通讯录程序使用结构体 `Contact` 来存储联系人信息,每个联系人包括姓名、住址、电话号码和QQ号。程序使用文件操作函数 `fwrite` 和 `fread` 将联系人信息写入和读取出来存储在文件 `contacts.dat` 中。你可以根据需要进行扩展和修改。希望对你有帮助!
阅读全文