Código
#include <stdio.h> typedef struct Vagon{ int numero; int peso; char *carga; }vagon; typedef struct Tren{ vagon *v; }tren; int main(){ int nvagones=10; tren *p=(tren *)malloc(sizeof(tren)); p->v =(vagon *)malloc(nvagones*sizeof(vagon)); return 0; }
Estoy aprendiendo punteros y este ejemplo trata de hacer trenes con muchos vagones. En el ejemplo con 1 solo tren luego reservo memoria para 10 vagones. Lo que pasa es que no se acceder luego a cada vagon porque p->v[2]->numero=1; por ejemplo no funciona y no entiendo porque. ¿Alguien me explica?
Dejo el code de ejemplo por si a alguien le sirve de algo:
Código
#include <stdio.h> typedef struct Vagon{ int numero; int peso; char *carga; }vagon; typedef struct Tren{ vagon *v; }tren; char cargas[4][25]={"MADERA","PAN","HIERRO","ALIMENTOS"}; int main(){ srand(time(NULL)); int nvagones=10; int i; tren *p=(tren *)malloc(sizeof(tren)); p->v =(vagon *)malloc(nvagones*sizeof(vagon)); for(i=0;i<nvagones;i++){ p->v[i].numero=i+1; p->v[i].peso = 500+(rand()%1500); p->v[i].carga =cargas[rand()%4]; } for(i=0;i<nvagones;i++){ printf("Numero: %d\n",p->v[i].numero); printf("\tPeso: %dKg",p->v[i].peso); printf("\tCarga: %s\n",p->v[i].carga); } return 0; }