in

Matriz en estructura C

apple touch icon@2

En la estructura de C, los elementos de la matriz deben tener un tamaño fijo, por lo que 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 se vería así

struct potNumber{
    int array[20];
    char theName[10][20];
};

y lo inicializas así:

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 quieres. La forma sensata de hacer esto requería un 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, recomiendo encarecidamente no utilizar matrices C desnudas. Hacer todo a través de estructuras y funciones auxiliares lo mantiene libre de errores de búfer / sobrecargas y otros problemas. Todo codificador de C serio construye una biblioteca de código sustancial con cosas como esta a lo largo del tiempo.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

ripple counter diagram

Contadores digitales

gTkhftbWwCcdy6bkh5DsYk 1200 80

Los mejores juegos de mesa para fiestas de 2021: atractivos esenciales para amigos y familiares