结构体增删改查写入文件
时间: 2023-07-08 10:13:24 浏览: 41
结构体的增删改查可以通过结构体数组来实现,而写入文件则可以使用文件操作相关的函数。
下面是一个简单的例子,展示如何利用结构体数组实现增删改查,并将最终结果写入文件:
```
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
// 定义结构体
struct employee {
char name[20];
int age;
char department[20];
};
// 定义结构体数组
struct employee employees[100];
int count = 0;
// 添加员工信息
void add_employee() {
struct employee e;
printf("请输入员工姓名:");
scanf("%s", e.name);
printf("请输入员工年龄:");
scanf("%d", &e.age);
printf("请输入员工部门:");
scanf("%s", e.department);
employees[count++] = e;
printf("添加成功!\n");
}
// 删除员工信息
void delete_employee() {
char name[20];
printf("请输入要删除的员工姓名:");
scanf("%s", name);
int i;
for (i = 0; i < count; i++) {
if (strcmp(employees[i].name, name) == 0) {
break;
}
}
if (i == count) {
printf("未找到该员工!\n");
return;
}
for (; i < count - 1; i++) {
employees[i] = employees[i + 1];
}
count--;
printf("删除成功!\n");
}
// 修改员工信息
void modify_employee() {
char name[20];
printf("请输入要修改的员工姓名:");
scanf("%s", name);
int i;
for (i = 0; i < count; i++) {
if (strcmp(employees[i].name, name) == 0) {
break;
}
}
if (i == count) {
printf("未找到该员工!\n");
return;
}
struct employee e;
printf("请输入员工姓名:");
scanf("%s", e.name);
printf("请输入员工年龄:");
scanf("%d", &e.age);
printf("请输入员工部门:");
scanf("%s", e.department);
employees[i] = e;
printf("修改成功!\n");
}
// 查找员工信息
void find_employee() {
char name[20];
printf("请输入要查找的员工姓名:");
scanf("%s", name);
int i;
for (i = 0; i < count; i++) {
if (strcmp(employees[i].name, name) == 0) {
printf("姓名:%s\n年龄:%d\n部门:%s\n", employees[i].name, employees[i].age, employees[i].department);
return;
}
}
printf("未找到该员工!\n");
}
// 写入文件
void save_to_file() {
FILE* fp;
fp = fopen("employees.txt", "w");
if (fp == NULL) {
printf("打开文件失败!\n");
return;
}
int i;
for (i = 0; i < count; i++) {
fprintf(fp, "%s %d %s\n", employees[i].name, employees[i].age, employees[i].department);
}
fclose(fp);
printf("写入文件成功!\n");
}
int main() {
int choice;
while (1) {
printf("请选择操作:\n");
printf("1. 添加员工信息\n");
printf("2. 删除员工信息\n");
printf("3. 修改员工信息\n");
printf("4. 查找员工信息\n");
printf("5. 写入文件\n");
printf("6. 退出\n");
scanf("%d", &choice);
switch (choice) {
case 1:
add_employee();
break;
case 2:
delete_employee();
break;
case 3:
modify_employee();
break;
case 4:
find_employee();
break;
case 5:
save_to_file();
break;
case 6:
exit(0);
default:
printf("无效的操作!\n");
}
}
return 0;
}
```
在这个例子中,我们定义了一个结构体数组来存储员工信息,并实现了添加、删除、修改和查找员工信息的功能。最后,在用户选择将结果写入文件时,我们使用了文件操作相关的函数来将结果写入一个文本文件中。