小编Vin*_*ift的帖子

避免使用相似结构的重复代码 C

我在一个有 3 个类似结构的程序中工作。

typedef struct{
  int id;
  Person p;
}Client;

typedef struct{
  int id;
  Person p;
}Employee;

typedef struct{
  int id;
  Person p;
}Provider;
Run Code Online (Sandbox Code Playgroud)

制作的数据保存在三个不同的文件中。函数使用的大部分信息来自Person p;并且都是相似的(制作客户/员工/提供商,列出它们等)。问题是,因为它们是三种不同的结构,所以我必须为每个作业重复代码 3 次以从每个人中提取信息或制作数组以对文件进行排序。我想不出使用正确类型的单个代码来避免问题的方法。示例代码:

`

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); …
Run Code Online (Sandbox Code Playgroud)

c struct function

3
推荐指数
1
解决办法
105
查看次数

标签 统计

c ×1

function ×1

struct ×1