建立某单位职工通讯录的二进制数据文件,文件中的每个记录包括:职工编号、姓名、电话号码、 邮政编码和住址。 从键盘输入职工的编号,在所建立的通讯录文件中查找该职工资料。 查找成功后,显示职工的姓名、电话号码、邮政编码和住址
时间: 2024-05-16 22:14:23 浏览: 114
好的,这个可以使用 C 语言来实现。我们可以先定义一个结构体来表示每个职工的信息:
```c
#define MAX_NAME_LEN 50
#define MAX_ADDRESS_LEN 100
typedef struct {
int id; // 职工编号
char name[MAX_NAME_LEN]; // 姓名
char phone[MAX_NAME_LEN]; // 电话号码
char postcode[MAX_NAME_LEN]; // 邮政编码
char address[MAX_ADDRESS_LEN]; // 住址
} Employee;
```
然后我们可以定义一个函数来从文件中读取职工信息:
```c
#include <stdio.h>
#define FILE_NAME "employee.dat"
void read_employee(int id, Employee *emp) {
FILE *fp;
int found = 0;
fp = fopen(FILE_NAME, "rb");
if (fp == NULL) {
printf("Failed to open file %s\n", FILE_NAME);
return;
}
while (fread(emp, sizeof(Employee), 1, fp) == 1) {
if (emp->id == id) {
found = 1;
break;
}
}
fclose(fp);
if (!found) {
printf("Employee with id %d not found\n", id);
}
}
```
这个函数会打开名为 "employee.dat" 的二进制文件,然后逐个读取记录,直到找到指定的职工编号为止。如果找到了该职工,就将其信息保存在传入的指针 emp 所指向的结构体中。
最后,我们可以在主函数中调用 read_employee 函数来查找职工信息:
```c
int main() {
int id;
Employee emp;
printf("Enter employee id: ");
scanf("%d", &id);
read_employee(id, &emp);
if (emp.id == id) {
printf("Name: %s\n", emp.name);
printf("Phone: %s\n", emp.phone);
printf("Postcode: %s\n", emp.postcode);
printf("Address: %s\n", emp.address);
}
return 0;
}
```
这个程序会提示用户输入职工编号,然后调用 read_employee 函数来查找该职工信息。如果找到了该职工,就会将其姓名、电话号码、邮政编码和住址打印出来。如果没有找到,就会输出一条错误信息。
阅读全文