在 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);
我有一个这样的结构:
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);