Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: quantumax9 en 12 Febrero 2019, 16:58 pm



Título: Estructuras: inicializar en ceros un array que es miembro de una estructura.
Publicado por: quantumax9 en 12 Febrero 2019, 16:58 pm
Código:
#include <stdio.h>
#include <stdlib.h>
#include <malloc.h>
#include <string.h>
struct Clients{
       char nombre[50];
       char apellido[50];
       int DNI;
       char clase[1];
       int numberSeat;
       int plane1[10]={0,0,0,0,0,0,0,0,0,0};//ERROR. ¿POR QUÉ NO SE PUEDE INICILIZAR ASÍ????

       };
¿Cómo hago para inicializar el miembro array plane1 dentro de la definición de la estructura con ceros?
MENSAJE DEL COMPILADOR:
[Warning] no semicolon at end of struct or union
 syntax error before '=' token

GRACIAS


Título: Re: Estructuras: inicializar en ceros un array que es miembro de una estructura.
Publicado por: MAFUS en 12 Febrero 2019, 18:11 pm
Porque una estructura sólo es un modelo. No puedes guardar nada hasta que no hagas una variable de ella.


Título: Re: Estructuras: inicializar en ceros un array que es miembro de una estructura.
Publicado por: ThunderCls en 12 Febrero 2019, 19:53 pm
1- En C++ 11 puedes hacer algo como:
Código
  1. struct Clients{
  2.       char nombre[50] = {};
  3.       char apellido[50] = {};
  4.       int DNI;
  5.       char clase[1];
  6.       int numberSeat;
  7.       int plane1[10] = {}; // inicializa a 0 todos los elementos
  8. }

2- Puedes usar un constructor para tu estructura, aunque en este punto recomendaria que uses una clase:
Código
  1. struct Clients{
  2.       char nombre[50];
  3.       char apellido[50];
  4.       int DNI;
  5.       char clase[1];
  6.       int numberSeat;
  7.       int *plane1;
  8.       Clients(){
  9.           plane1 = new int[10]();
  10.           // inicializa el resto
  11.       }
  12. };

3- Puedes usar la funcion:
   
Código
  1. memset(plane1, 0, sizeof(plane1));

4- Puedes usar un loop sobre cada elemento de tu array

5- Usa contenedores STL (vector, list, etc) en tu estructura

Saludos