创建动态结构数组

标签 c arrays dynamic struct

我需要创建一个结构数组,但我必须从文件中读取数组大小。我的问题是我可能完全错误地使用了指针。我不能使用全局变量。这是我编写的代码:

#include <stdio.h>
#include <stdlib.h>
struct driver
{
       int *amount;
       int ADT1[9];
       int ADO1[9];
};

struct driver totaldrivers[*amount];

我得到的错误 (2) 是“此处未声明的数量(不在函数中)”和“'totaldrivers' 的存储大小未知”。我尝试直接给 *amount 一个值,但没有运气,即使如此,数量也必须由用户创建的文件获取,数字是第一行。这就是我的问题所在。 (.txt)文件格式为:

4(条目数量)
123456789 , 978675645 (ADT1,ADO1)
.
.
.
我确信我犯了新手错误,所以如果问题很愚蠢,请原谅我。

最佳答案

我假设你的结构的内容应该如下(我已经删除了 int *amount):

struct driver
{
    int ADT1[9];
    int ADO1[9];
};

要创建这些结构的动态一维数组,首先创建一个指向 driver 的一维数组的指针:

struct driver *pDriver;

接下来,为数组中所需的元素数量分配内存。这应该是已知的(N):

pDriver = malloc(N * sizeof(*pDriver));

如果你想记录元素的数量,你应该这样做:

struct driver
{
    int ADT1[9];
    int ADO1[9];
};

struct driverArray
{
    int numDrivers;
    struct driver *pDriver;
};

struct driverArray driverArr;

driverArr.numDrivers = N;
driverArr.pDriver = malloc(driverArr.numDrivers * sizeof(*driverArr.pDriver));

关于创建动态结构数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20845807/

相关文章:

ios - Apple 数学库与 C 中的其他数学库

c - MSG_CONFIRM 和 TCP

javascript - 将值添加到数组中的对象

c++ - 类中的对象数组

c - 格式说明符 %02x

c - 将 Log_2 的位旋转破解扩展到 64 位

sql - 使用 exec 命令切断动态 SQL 语句时出错

C 双重释放错误

python - 创建在 2D numpy 数组中充当分组样式查找的字典的最快方法?

c# - 要提供哪种参数类型(即 IEnumerable 且具有 Count)?