如何显示一个结构的另一个结构的列表?

马萨诸塞州

我正在做一个小项目,其中有一个汽车结构(年份,品牌等)和一个包含汽车的收藏结构,如何在收藏中显示汽车?

在我的Car.h中,我定义了:

struct CarP;
typedef struct CarP * Car;
typedef const struct CarP * constCar;

Car car_createCopy(constCar c); //returns a copied car from c 
void display_car(constCar c);

在我的Collection.h文件中,我定义了:

struct CollectionP;
typedef struct CollectionP * Collection;
typedef const struct CollectionP * constCol;

并在Collection.c中:

struct CollectionP{
    int nbCars;
    Car * carList;
}

int getNbCars(constCol c){
    return c -> nbCars;
}

void add_car(Collection c, constCar car){
    int nbCar = getNbCars(c);
    if(nbCar == 0)
        c -> carList = malloc(sizeof(car));
    else{
        c -> carList = realloc(c -> carList,(nbCar+1)*sizeof(car));
        c -> carList[nbCar] = car_createCopy(car);
    }
    c -> nbCars++;
}

void display_col(constCol c){
    int nbCar = getNbCars(c);
    for(int i = 0; i < nbCar; i++)
        display_car(c -> carList[i]);
}

在向集合中添加了一些汽车之后,我尝试调用显示函数,我只得到了一辆带有空值的品牌车和其他数字作为其他字段的值的汽车,然后程序因分段错误而停止。

WhozCraig

这是错的。(请参见// HERE下文):

void add_car(Collection c, constCar car){
    int nbCar = getNbCars(c);
    if(nbCar == 0)
        c -> carList = malloc(sizeof(car));
    else{
        c -> carList = realloc(c -> carList,(nbCar+1)*sizeof(car));
        c -> carList[nbCar] = car_createCopy(car);  // HERE
    }
    c -> nbCars++;
}

标记的行是将汽车副本放入列表的原因。但它永远不会在第一次添加时执行。应该将其移动,特别是在else之后和之外

void add_car(Collection c, constCar car){
    int nbCar = getNbCars(c);
    if(nbCar == 0)
        c -> carList = malloc(sizeof(car));
    else{
        c -> carList = realloc(c -> carList,(nbCar+1)*sizeof(car));
    }
    c -> carList[nbCar] = car_createCopy(car);  // FIXED
    c -> nbCars++;
}

就是说,其中有很多地方需要进行错误检查,并且您对的使用realloc应通过一个临时指针,以免丢失分配的列表而NULL导致错误的结果。但是,您问题的核心是如上所述。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何在Rust中将一个结构映射到另一个结构?

如何检查一个结构的实例本身是否是另一个结构的实例

如何创建由另一个组成的结构

如何使用从另一个包导入的结构

如何从另一个类获取结构值?

如何使用参数将一个函数从一个结构传递到另一个结构中的另一个函数

结构中的指针指向另一个结构

为结构分配另一个结构

扩展另一个结构内部的结构

访问另一个结构中的结构字段

在另一个结构内创建结构数组

包含对另一个结构的引用的C结构

用于定义另一个结构的typedef结构?

另一个结构中的结构 Solidity

当一个结构包含另一个结构时,如何在Go中将其转换为另一个结构?

如何将重复的子结构从一个结构复制到另一个结构?

如何将数据从一个结构链接到另一个

tiki-wiki:如何将一个结构复制到另一个结构或如何复制一个结构

在GO中从一个结构复制到另一个结构

将一个结构的字段更新为另一个结构

读入一个结构会覆盖另一个结构

使用 MFC 将一个结构复制到另一个结构

一个结构的Assignin字段而不是另一个结构

在另一个结构内为一个结构数组分配内存

Pyspark:从另一个结构数组创建一个结构数组

为什么一个结构指针不能被另一个结构指针声明

在 Java 上将一个表结构转换为另一个表结构

强制一个结构比另一个结构寿命长

如何从一个结构中获取 fmt::Display 以将其显示在另一个结构的 fmt::Display 中?