У меня есть такая структура:
struct _Total {
Socio *socio[0];
Libro *libro[0];
int numsocios;
int numlibros;
};
У меня есть практика в моем университете, и мне нужно перераспределять указатель «socio» и «libro» каждый раз, когда я добавляю данные. Например, если есть только один "socio", массив должен иметь размер 1, если я добавлю еще один "socio", мне нужно перераспределить его до размера 2, а затем добавить указатель на новую структуру (счетчик "numsocios "). То же самое и с «либро».
Я попробовал эту функцию (в файле 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;
}
Итак, как я могу решить мою проблему?
P.S. Это структура Socio (в socio.c — в этом файле она также имеет функцию malloc и free).
struct _Socio {
char nombre[MAXCAR];
char apellido[MAXCAR];
int dni;
char direccion[MAXCAR];
int tlf;
int numprestamos;
};
Спасибо!
typedef struct _Socio Socio;
? - person Ian Abbott   schedule 07.06.2016malloc
& friends в C. - person too honest for this site   schedule 07.06.2016typedef struct _Socio Socio;
не появляется перед объявлениемtotal_ajustarsocio()
. Пожалуйста, проверьте свой код - person GMichael   schedule 07.06.2016Socio
наstruct _Socio
внутриrealloc (*socio, tam * sizeof(Socio))
- person GMichael   schedule 07.06.2016struct _Socio
в social.c, поэтому неудивительно, что вы получаетеsizeof
ошибок в total.c. Вам нужно переместить полное объявлениеStruct _Socio
в social.h, чтобы оно было видно total.c. В качестве альтернативы вы можете переместить все функции, которым нужно знать размерstruct _Socio
, в social.c. - person Ian Abbott   schedule 07.06.2016