Realloc指向C中Struct的指针数组

时间:2016-06-07 11:05:04

标签: c arrays pointers struct realloc

我有这样的结构:

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

我在大学里练习,我需要重新学习" socio"和" libro"指针每次添加数据。例如,如果a只有一个" 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的功能,并且在此文件中也是免费的)。

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

谢谢!

1 个答案:

答案 0 :(得分:3)

您的struct _Total错了。它应该是:

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

您的total_ajustarsocio函数可能会被称为:

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