2010-12-21 7 views
5

tengo una matriz que tiene este aspecto:C variedad de estructuras con una cadena - la manipulación/el acceso

struct table_elt 
{ 
    int id; 
    char name[]; 
} 

struct table_elt map[] = 
{ 
    {123,"elementt1"}, 
    {234,"elt2"}, 
    {345,"elt3"} 
}; 

Estoy intentando acceder a estos elementos a través de un mapa [1] .name, etc. Sin embargo, no parece ser capaz de recuperar los elementos correctamente, y recibo basura al azar. Creo que esto se debe a que el compilador no sabe dónde caen los elementos debido a la variación. ¿Cuál es la mejor manera de solucionar esto, manteniendo al mismo tiempo tanta flexibilidad y simplicidad?

Respuesta

8

es probable que desee:

struct table_elt 
{ 
    int id; 
    const char *name; 
} 

struct table_elt map[] = 
{ 
    {123,"elementt1"}, 
    {234,"elt2"}, 
    {345,"elt3"} 
}; 

En una nota lateral, table_elt ni siquiera necesita un nombre si se usa sólo en este contexto.

1

No puede tener una matriz de longitud indefinida dentro de la estructura table_elt. Puede cambiarlo a un char * y hacer que apunte a una matriz char asignada en otro lugar, o elegir una longitud apropiada para su matriz e incluirla en la definición de estructura:

struct table_elt 
{ 
    int id; 
    char name[15]; 
} 
+0

esto funciona también! – jetru

Cuestiones relacionadas