elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Como proteger una cartera - billetera de Bitcoin


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Estructuras Anidadas, dudas
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Estructuras Anidadas, dudas  (Leído 2,220 veces)
mari2diaz

Desconectado Desconectado

Mensajes: 24


Ver Perfil
Estructuras Anidadas, dudas
« en: 8 Febrero 2020, 21:28 pm »

Nose  si la estructura anidada esta bien declarada porque cuando voy a ingresar los datos del coordinador el programa deja de funcionar, y si estoy creando bien las cadenas y mercados dinamicamente?

Código
  1. /*
  2.       Crear las cadenas dinámicamente.
  3.       Los mercados crearlos dinámicamente.  */
  4.  
  5. #include<stdio.h>
  6. #include<stdlib.h>
  7.  
  8. typedef struct Mercados_Municipales{
  9. char *nombre;
  10. char *direccion;
  11. char *telefono;
  12. struct Datos_Coordinador *c;
  13. }Mercados;
  14.  
  15. struct Datos_Coordinador{
  16. char *nombrec;
  17. char *apellidoc;
  18. char *cedulac;
  19. char *telefonoc;
  20. };
  21.  
  22. void Presentacion();
  23. Mercados *Leer_Mercado(void);
  24. void Imprimir_Mercado(Mercados *mercado);
  25.  
  26. int main(){
  27. Mercados *mercados[20];
  28. char desicion;
  29. int cantidad, mercado = 0;
  30.  
  31. Presentacion();
  32.  
  33. for(cantidad = 0; cantidad < 20; cantidad++){
  34.  
  35. printf("\n\tMercado Municipal #%d\n\n", cantidad + 1);
  36. mercados[cantidad] = Leer_Mercado();
  37.  
  38. do{
  39.  
  40. printf("\n\tPasamos a otro? [S/N] ");
  41. desicion = getchar();       /* Leemos un caracter */
  42. while(getchar() == EOF);    /* Necesario para que se coma el \n */
  43.  
  44. }while(desicion != 'S' && desicion != 's' && desicion != 'N' && desicion != 'n');
  45. /* Si elige N o n, se sale */
  46. if(desicion == 'N' || desicion == 'n') break;
  47. }
  48.  
  49. printf("\nInformacion del Mercado: ");
  50. scanf("%d", &mercado);
  51.  
  52. Imprimir_Mercado(mercados[mercado - 1]);
  53.  
  54. return 0;
  55. }
  56.  
  57. void Presentacion(){
  58. printf("\t\t********************************\n");
  59. printf("\t\t*        Ciudad Guayana        *\n");
  60. printf("\t\t*     Mercados municipales     *\n");
  61. printf("\t\t********************************\n");
  62. }
  63.  
  64. Mercados *Leer_Mercado(){
  65.  
  66. Mercados *mercado = (Mercados *) malloc(sizeof(Mercados));
  67.  
  68. mercado->nombre = (char *) malloc(sizeof(char) * 20);
  69. mercado->direccion = (char *) malloc(sizeof(char) * 50);
  70. mercado->telefono = (char *) malloc(sizeof(char) * 15);
  71.  
  72. printf("Nombre: ");
  73. gets(mercado->nombre);
  74. printf("Direccion: ");
  75. gets(mercado->direccion);
  76. printf("Telefono: ");
  77. gets(mercado->telefono);
  78.  
  79. mercado->c->nombrec = (char *) malloc(sizeof(char) * 20);
  80. mercado->c->apellidoc = (char *) malloc(sizeof(char) * 20);
  81. mercado->c->cedulac = (char *) malloc(sizeof(char) * 15);
  82. mercado->c->telefonoc = (char *) malloc(sizeof(char) * 15);
  83.  
  84. printf("Informacion del Coordinador\n\n");
  85. printf("\tNombre: ");
  86. gets(mercado->c->nombrec);
  87. printf("\tApellido: ");
  88. gets(mercado->c->apellidoc);
  89. printf("\tCedula: ");
  90. gets(mercado->c->cedulac);
  91. printf("\tTelefono: ");
  92. gets(mercado->c->telefonoc);
  93.  
  94. return mercado;
  95. }
  96.  
  97. void Imprimir_Mercado(Mercados *mercado){
  98. printf("\n\tMercado Municipal: %s\n\n", mercado->nombre);
  99.  
  100. printf("Direccion: %s\tTelefono: %s\n\n",
  101.       mercado->direccion, mercado->telefono);
  102.  
  103. printf("Datos del Coordinador:\n\n");
  104. printf("%s %s\tCedula: %s\n",
  105.       mercado->c->nombrec, mercado->c->apellidoc,
  106.   mercado->c->cedulac);
  107.    printf("Telefono: %s\n\n", mercado->c->telefonoc);
  108. }


En línea

ivancea96


Desconectado Desconectado

Mensajes: 3.412


ASMático


Ver Perfil WWW
Re: Estructuras Anidadas, dudas
« Respuesta #1 en: 9 Febrero 2020, 00:16 am »

El Coordinador "c" es también un puntero, así que hay que inicializarlo con memoria:
Código
  1. mercado->c = (...) malloc(...);


En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Estructuras anidadas, funciones y punteros
Programación C/C++
NathanD 9 10,828 Último mensaje 18 Marzo 2013, 08:56 am
por 85
Ayuda con borrado en estructuras anidadas
Programación C/C++
JHodges 8 3,777 Último mensaje 11 Junio 2015, 04:24 am
por rir3760
Estructuras anidadas en lenguaje C. -
Programación C/C++
NOB2014 3 4,389 Último mensaje 5 Febrero 2017, 18:42 pm
por ivancea96
Ayuda con estructuras anidadas
Programación C/C++
mari2diaz 3 2,116 Último mensaje 20 Julio 2018, 01:07 am
por engel lex
Estructuras Anidadas en C
Programación C/C++
Ghio97 5 2,772 Último mensaje 4 Septiembre 2019, 10:22 am
por MAFUS
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines