我可以将结构分配给另一个字段结构吗?

时间:2014-03-09 15:33:54

标签: c structure assign

我正在使用两种结构来处理C:Car和List

#define MAX_LEN 10
#define NUM 7
typedef struct{
     char nr[NUM];
     char model[MAX_LEN];
     char categ[];
}Car;

#define LEN 100
typedef struct{
     Car elem[LEN];
     int n;
}List;

我想在car中添加List类型的元素。我试过了

void add(List l, Car c){
      l.elem[l.n] = c;
      l.n ++;
}

但是当我打印列表时,我会得到奇怪的字符,我怀疑这是问题所在。

2 个答案:

答案 0 :(得分:1)

 void add(List* l, Car c){

        strcpy(l->elem[l->n].nr,c.nr);
        strcpy(l->elem[l->n].model,c.model);
        strcpy(l->elem[l->n].categ,c.categ);
        l->n= l->n + 1;
  }

答案 1 :(得分:0)

您可以通过List传递pointer并相应地收到

// Call
add(&l,c);

//Function 
void add(List* l, Car c){
    l->elem[l->n] = c;
    l->n++;
}