Ver Mensaje Individual
  #1 (permalink)  
Antiguo 15/05/2013, 15:49
Bael_Balzac
 
Fecha de Ingreso: julio-2011
Mensajes: 62
Antigüedad: 13 años, 3 meses
Puntos: 0
Pregunta Estructura con dimensión variable en C

Como podria hacer que una estructura contenga una cantidad variable de datos (línea 33); porque no se puede usar char[2] en una estructura ( línea 16); al usar printf("%c\n", nudo1.nombre) imprime un caracter extraño y si uso printf("%s\n", nudo1.arriba.nombre) el ejecutable se cuelga.


Código c:
Ver original
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4. // Pórtico con 5 nudos y 4 elementos
  5. //
  6. //         BC     CB   CE   EC
  7. //       B --------- C ------ E
  8. //       | BA     CD |
  9. //       |           |
  10. //       |           |
  11. //       |           |
  12. //       | AB     DC |
  13. //       A           D
  14.  
  15. struct elemento{
  16.        char nombre; //char[2] nombre;
  17.        double fem;
  18.        double df;
  19. };
  20.  
  21. struct nudo{
  22.        char nombre;
  23.        struct elemento arriba;
  24.        struct elemento abajo;
  25.        struct elemento izquierda;
  26.        struct elemento derecha;
  27. };
  28.  
  29. int main()
  30. {
  31.     struct elemento barra2;
  32.     struct nudo nudo1;
  33.     struct nudo nudos[5]; //struct nudo nudos[scanf("%d", &numero)];
  34.    
  35.     barra2.nombre = "BC";
  36.     barra2.fem = -17.5;
  37.     barra2.df = 0.47;
  38.    
  39.     nudo1.nombre = "A";
  40.     nudo1.arriba.nombre = "AB";
  41.     nudo1.arriba.fem = 20.5;
  42.     nudo1.arriba.df = 0.27;
  43.    
  44.     printf("%c\n", barra2.nombre);
  45.     printf("%4.2f\n", barra2.fem);
  46.     printf("%4.2f\n", barra2.df);
  47.    
  48.     printf("\n");
  49.    
  50.     printf("%c\n", nudo1.nombre);
  51.     printf("%c\n", nudo1.arriba.nombre);
  52.     printf("%4.2f\n", nudo1.arriba.fem);
  53.     printf("%4.2f\n", nudo1.arriba.df);
  54.  
  55.     system("PAUSE");   
  56.     return 0;
  57. }

Última edición por Bael_Balzac; 15/05/2013 a las 16:08