En elementos de la matriz C struct debe tener un tamaño fijo, por lo que el char *theNames[]
no es válido. Además, no puede inicializar una estructura de esa manera. En C, las matrices son estáticas, es decir, no se puede cambiar su tamaño de forma dinámica.
Una declaración correcta de la estructura es parecida a lo siguiente
struct potNumber{
int array[20];
char theName[10][20];
};
y inicializarlo como esto:
struct potNumber aPot[3]=
{
/* 0 */
{
{10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10 /* up to 20 integer values*/ },
{"Half-and-Half", "Almond", "Raspberry", "Vanilla", /* up to 10 strings of max. 20 characters */ }
},
/* 1 */
{
{10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10 /* up to 20 integer values*/ },
{"Half-and-Half", "Almond", "Raspberry", "Vanilla", /* up to 10 strings of max. 20 characters */ }
},
/* 2 */
{
{10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10 /* up to 20 integer values*/ },
{"Half-and-Half", "Almond", "Raspberry", "Vanilla", /* up to 10 strings of max. 20 characters */ }
}
};
Pero, estoy bastante seguro de que esto no es lo que quiere. La forma más sana de hacer esto requiere algo de código repetitivo:
struct IntArray
{
size_t elements;
int *data;
};
struct String
{
size_t length;
char *data;
};
struct StringArray
{
size_t elements;
struct String *data;
};
/* functions for convenient allocation, element access and copying of Arrays and Strings */
struct potNumber
{
struct IntArray array;
struct StringArray theNames;
};
Personalmente me aconsejan el uso de matrices C desnudos. Hacer todo a través de estructuras y funciones auxiliares te mantiene alejado del almacenamiento intermedio/exceso excesivo y otros problemas. Cada codificador de C serio construye una biblioteca de código sustancial con cosas como esta a lo largo del tiempo.
¿Qué errores obtienes? –
¿Así es como se define tu 'struct'? – birryree