Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: manri98 en 11 Noviembre 2016, 13:38 pm



Título: Crear arrays dinamicos en struct
Publicado por: manri98 en 11 Noviembre 2016, 13:38 pm
Hola a todos, tengo el siguiente problema. He creado la siguiente estructura, mi intención es que tenga un booleano, un array de caracteres(name)  y uno bidimensional(episodes)
Ejemplo:
    name = {"Name of the serie"}

    episodes = {"season1Title","Season2Title", "Season3Title"}
                       {"episode1","episode1","eisode1"}
                       {"episode2","episode2","eisode2"}
                     
    isAll = true


Código
  1. typedef struct{
  2.    char *name;
  3.    char *episodes;
  4.    bool isAll;
  5. }show;
  6.  

Los datos que almacenará se sabrán en tiempo de ejecución y quería saber si era posible reservar dinámicamente espacio de memoria. En el código los escribí como punteros para mas tarde hacer esto:
Código
  1. show myShow;
  2. myShow.name = (char *)malloc(longitudNombre*sizeof(char));
  3.  
  4.  
¿Esto sería corecto?¿Como lo haría para el array bidimensional? Además me surge la duda de como podría recorrer el array después. Si fuese sumando uno al puntero, creo que tendría que mirar cuando el valor es el byte nulo.


Título: Re: Crear arrays dinamicos en struct
Publicado por: manri98 en 11 Noviembre 2016, 19:33 pm
Seguí investigando. Creo que declarar un array dentro del struct no es posible porque al crear una instancia el compilador necesitaría conocer el tamaño de este antes. No se estoy equivocado.
Así que sigo como antes :(


Título: Re: Crear arrays dinamicos en struct
Publicado por: MAFUS en 11 Noviembre 2016, 21:11 pm
Puedes crear un array dinámico dentro del struct ya que el miembro es un puntero, y ese es un tipo de dato con el tamaño bien definido.
El array propiamente dicho se crea en otra zona de memoria a la que apuntarás con el puntero del struct.


Título: Re: Crear arrays dinamicos en struct
Publicado por: manri98 en 12 Noviembre 2016, 04:27 am
Y eso lo haría asi?
Código
  1. show myShow;
  2. myShow.name = (char *)malloc(longitudNombre*sizeof(char));
  3.  


Título: Re: Crear arrays dinamicos en struct
Publicado por: MAFUS en 12 Noviembre 2016, 10:32 am
Sí. Recuerda aplicar free a los datos antes de que la estructura se destruya.