在 C 中重新分配指向结构的指针数组

Realloc array of pointers to an Struct in C

我有一个这样的结构:

struct _Total {
    Socio *socio[0];
    Libro *libro[0];
    int numsocios;
    int numlibros;
};

我在大学实习,每次添加数据时都需要重新分配"socio"和"libro"指针。例如,如果一个数组只有一个 "socio",则数组的大小需要为 1,如果我添加另一个 "socio",我需要将其重新分配为大小 2,然后将指针添加到新结构(计数器是 "numsocios")。 "libro".

相同

我试过这个函数(在 total.c 文件中)但显然我有类型错误:

STATUS total_ajustarsocio(Socio **socio, int tam) {

    Socio *temp = NULL;

    if (!socio) {
        return ERROR;
    }

    temp = (Socio *) realloc (*socio, tam * sizeof(Socio));

    if (!temp) {
        printf("Error reallocating Socio");
        return ERROR;
    }

    *socio = temp;

    return OK;
}

那么,我该如何解决 mi 问题?

P.S。这是 Socio 结构(在 socio.c 中 - 它在此文件中也具有 malloc 和 free 的功能)。

struct _Socio {
    char nombre[MAXCAR];
    char apellido[MAXCAR];
    int dni;
    char direccion[MAXCAR];
    int tlf;
    int numprestamos;
};

谢谢!

你的struct _Total是错误的。应该是:

struct _Total {
    Socio *socio;
    Libro *libro;
    int numsocios;
    int numlibros;
};

您的 total_ajustarsocio 函数可以这样调用:

total.numsocios++;
err = total_ajustarsocio(&total.socio, total.numsocios);