我正在一个程序中工作,其中有三个类似的结构。
typedef struct{
int id;
Person p;
}Client;
typedef struct{
int id;
Person p;
}Employee;
typedef struct{
int id;
Person p;
}Provider;
生成的数据保存在三个不同的文件中。 大部分函数使用的信息来自Person p;它们都很相似(制作客户/员工/提供商,列出它们等等)。 问题是,因为它们是三种不同的结构,我必须为每项工作重复代码三次,以从每个人提取信息或制作数组以排序文件。 我无法想到一种方法来使用正确类型的单个代码避免这个问题。 示例代码:
int extractNameProvider(){
FILE *arch;
int ret=0;
Provider pro;
arch=fopen("fileP","rb");
if(arch!=NULL){
fread(&cli,sizeof(Provider),1,arch);
printf("%s",pro.p.name);
fclose(arch);
}
else{
ret=-1;
}
return ret;
}
int extractNameClient(){
FILE *arch;
int ret=0;
Client cli;
arch=fopen("fileC","rb");
if(arch!=NULL){
fread(&cli,sizeof(Client),1,arch);
printf("%s",cli.p.name);
fclose(arch);
}
else{
ret=-1;
}
return ret;
}
int extractNameEmployee(){
FILE *arch;
int ret=0;
Employee emp;
arch=fopen("fileE","rb");
if(arch!=NULL){
fread(&emp,sizeof(Employee),1,arch);
printf("%s",emp.p.name);
fclose(arch);
}
else{
ret=-1;
}
return ret;
}
typedef
并将Client
、Employee
和Provider
定义为相同的结构体。 - Afshin