Que error tengo en la linea 128?
mercado->p = (struct Puestos) malloc(sizeof(struct Puestos) * tam);
y si hago estas dos funciones
void espacio_memoria(Mercados *mercado); para crear espacio en memoria de todo
void free_memoria(Mercados *mercado); y para liberarla
también me funciona?
/* Se necesita la información de los mercados municipales de ciudad Guayana, indicando
el nombre de cada mercado, dirección, TLF y la información del coordinador del
mercado (c.i, nombre, apellido y teléfono). Cada mercado tiene un máximo de 50
puestos, a cada puesto se le específica un nro de local y tamaño (largo y ancho),
datos del propietario (TLF, c.i, nombre y apellido) y cada local almacena
adicionalmente los ingresos por cada mes del año.
*Realizar una función para solicitar la información y una para mostrarla, usar dichas
funciones para un total de 20 mercados municipales
*Crear las cadenas dinámicamente.
*Los puestos de mercado crearlos dinámicamente.
*Los mercados crearlos dinámicamente. */
#include<stdio.h>
#include<stdlib.h>
typedef struct Mercados_Municipales{
char* nombre;
char* direccion;
char* telefono;
struct Datos_Coordinador *info_c;
struct Puestos *p;
}Mercados;
struct Datos_Coordinador{
char* nombrec;
char* apellidoc;
char* cedulac;
char* telefonoc;
};
struct Puestos{
int numero;
struct Tamano *t;
struct Datos_Propietario *info_p;
int* mensual;
};
struct Tamano{
float largo;
float ancho;
};
struct Datos_Propietario{
char* nombrep;
char* apellidop;
char* cedulap;
char* telefonop;
};
void Presentacion();
Mercados *Leer_Mercado();
int main(){
Mercados *mercados[20];
char desicion;
int cantidad;
Presentacion();
for(cantidad = 0; cantidad < 20; cantidad ++){
printf("\tMercado Municipal #%d\n\n", cantidad
+ 1); mercados[cantidad] = Leer_Mercados();
do{
printf("Pasamos a otro? [S/N] ", cantidad
); desicion
= getchar(); // Leemos un caracter while(getchar() == EOF
); // Necesario para se coma el \n }while(desicion != 'S' && desicion != 's' && desicion != 'N' && desicion != 'n');
if(desicion == 'N' || desicion == 'n') break; // Si elige N, se sale
}
return 0;
}
void Presentacio(){
printf("\t\t*********************************\n"); printf("\t\t* Giudad Guayana *\n"); printf("\t\t* Mercados Municipales *\n"); printf("\t\t*********************************\n\n"); }
Mercados *Leer_Mercado(){
Mercados
*mercado
= (Mercados
*) malloc(sizeof(Mercados
));
mercado
->nombre
= (char *) malloc(sizeof(char) * 20); mercado
->direccion
= (char *) malloc(sizeof(char) * 50); mercado
->telefono
= (char * ) malloc(sizeof(char) * 15);
gets(mercado
->direccion
);
printf("\nInformacion del Coordinador\n\n");
mercado
->info_c
= (struct Datos_Coordinador
*) malloc(sizeof(struct Datos_Coordinador
));
mercado
->info_c
->nombrec
= (char *) malloc(sizeof(char) * 20); mercado
->info_c
->apellidoc
= (char *) malloc(sizeof(char) * 20); mercado
->info_c
->cedulac
= (char *) malloc(sizeof(char) * 15); mercado
->info_c
->telefonoc
= (char *) malloc(sizeof(char) * 15);
gets(mercado
->info_c
->nombrec
); gets(mercado
->info_c
->apellidoc
); gets(mercado
->info_c
->cedulac
); gets(mercado
->info_c
->telefonoc
);
printf("\nNumero de Locales "); int i
, tam
; scanf("%d", &tam
);
mercado
->p
= (struct Puestos
) malloc(sizeof(struct Puestos
) * tam
);
for(i = 0; i < tam; i++){
mercado->p[i]->numero = i;
mercado
->p
[i
]->t
= (struct Tamano
) malloc(sizeof(struct Tamano
));
mercado
->p
[i
]->info_p
= (struct Datos_Propietario
) malloc(sizeof(struct Datos_Propietario
)); mercado
->p
[i
]->info_p
->nombrep
= (char *) malloc(sizeof(char) * 20); mercado
->p
[i
]->info_p
->apellidop
= (char *) malloc(sizeof(char) * 20); mercado
->p
[i
]->info_p
->cedulap
= (char *) malloc(sizeof(char) * 15); mercado
->p
[i
]->info_p
->telefonop
= (char *) malloc(sizeof(char)* 15);
scanf("&d %d", &mercado
->p
->t
->largo
, &mercado
->p
->t
->ancho
); printf("\tInformacion del Propietario\n\n"); gets(mercado
->p
->info_p
->nombrep
); gets(mercado
->p
->info_p
->apellidop
); gets(mercado
->p
->info_p
->cedulap
); gets(mercado
->p
->info_p
->telefonop
);
printf("\n\tIngresos Mensuales: "); int j
; mercado
->p
->mensual
= (int *) malloc(sizeof(int) * 12);
for(j = 0; j < 12; j++){
scanf("%d", &mercado
->p
->mensual
[j
]); }
}
return mercado;
}