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

 

 


Tema destacado: Usando Git para manipular el directorio de trabajo, el índice y commits (segunda parte)


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


Desconectado Desconectado

Mensajes: 366



Ver Perfil
Estructuras anidadas en lenguaje C. -
« en: 5 Febrero 2017, 14:28 pm »

Hola, buen día. -
Necesito una ayudita, encontré este código, pero no logro interpretarlo del todo, el propósito es que en la función get_String en la primera llamada aparezca "el nombre" y en la segunda "la dirección" en TiposString[NomDir->tipo], el caso es que por más que leo los errores no puedo hacer que compile. -
Ya logre lo mismo pasando un parametro a la función, pero me interesaría poder hacerlo de esta manera. -

Código
  1. #include <stdio.h>
  2.  
  3. typedef struct {
  4. char texto[30];
  5. int tipo;
  6. } texto_t;
  7.  
  8. typedef struct{
  9. texto_t nombre;
  10. texto_t direccion;
  11. }alumno;
  12.  
  13. const char * TiposString[]={"el nombre","la direccion"};
  14.  
  15. void get_String( texto_t * NomDir );
  16.  
  17. int main( void ){
  18. alumno *ptrAlumno;
  19.  
  20. get_String( ptrAlumno->nombre );
  21. get_String( ptrAlumno->direccion );
  22.  
  23. return 0;
  24. }
  25.  
  26. void get_String( texto_t * NomDir ){
  27. printf("\n Ingresa %s del alumno ......:", TiposString[NomDir->tipo] );
  28. }
  29.  
  30. /*
  31. Para acceder/guardar al texto es:
  32.  
  33. NomDir->texto

Nos estamos leyendo. -


En línea

abraza las cosas y personas malas como si fueran tu mas preciada joya,Son tus mas grandes maestros de paciencia sabiduría y amor y cuando lo abrazas dejan de causar dolor.-
ivancea96


Desconectado Desconectado

Mensajes: 3.412


ASMático


Ver Perfil WWW
Re: Estructuras anidadas en lenguaje C. -
« Respuesta #1 en: 5 Febrero 2017, 15:06 pm »

Código
  1. void get_String( texto_t * NomDir );
Código
  1. get_String( ptrAlumno->nombre );

ptrAlumno->nombre no es texto_t*, es texto_t. para pasarle la dirección de memoria, el operador &:
Código
  1. get_String( &ptrAlumno->nombre );


Y otra cosa importante:
Código
  1. alumno *ptrAlumno;

es un puntero a alumno, no un alumno. Tienes que reservar memoria:
Código
  1. alumno *ptrAlumno = (alumno*) malloc(sizeof(alumno));

Y un detalle más. Cuando sea así, postea el error. Este era un código corto, pero en códigos largos, sin el error, puede ser complicado ver el problema (y no siempre vamos a compilar nosotros el código para ver los errores)


En línea

NOB2014


Desconectado Desconectado

Mensajes: 366



Ver Perfil
Re: Estructuras anidadas en lenguaje C. -
« Respuesta #2 en: 5 Febrero 2017, 18:06 pm »

Hola.
Citar
Y un detalle más. Cuando sea así, postea el error. Este era un código corto, pero en códigos largos, sin el error, puede ser complicado ver el problema (y no siempre vamos a compilar nosotros el código para ver los errores)
mil disculpas lo voy a tener en cuenta, ahora les pido un empujoncito mas, no puedo acceder al campo tipo de la estructura texto_t, me podrían indicar como se hace ;D. -

Código
  1. int main( void ){
  2. alumno *ptrAlumno = (alumno*) malloc(sizeof(alumno));
  3.  
  4. get_String( &ptrAlumno->nombre );
  5.  
  6. // ptrAlumno->texto_t->tipo = 1;
  7. get_String( &ptrAlumno->direccion );
  8.  
  9. free( ptrAlumno );
  10. return 0;
  11. }

Desde ya muchas gracias. -
En línea

abraza las cosas y personas malas como si fueran tu mas preciada joya,Son tus mas grandes maestros de paciencia sabiduría y amor y cuando lo abrazas dejan de causar dolor.-
ivancea96


Desconectado Desconectado

Mensajes: 3.412


ASMático


Ver Perfil WWW
Re: Estructuras anidadas en lenguaje C. -
« Respuesta #3 en: 5 Febrero 2017, 18:42 pm »

El campo de la estructura no se llama "texto_t". Se llama "nombre" o "direccion", según cual quieras.
Código
  1. ptrAlumno->nombre.tipo = 1;
Además, "tipo" no es un puntero, as´ñi que pones "." en vez de "->".
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,743 Último mensaje 18 Marzo 2013, 08:56 am
por 85
[Ayuda] Estructuras anidadas, registro. Lenguaje C « 1 2 »
Programación C/C++
neron991 11 10,170 Último mensaje 9 Julio 2015, 10:07 am
por mester
Ayuda con estructuras anidadas
Programación C/C++
mari2diaz 3 2,068 Último mensaje 20 Julio 2018, 01:07 am
por engel lex
Estructuras Anidadas en C
Programación C/C++
Ghio97 5 2,706 Último mensaje 4 Septiembre 2019, 10:22 am
por MAFUS
Estructuras Anidadas, dudas
Programación C/C++
mari2diaz 1 2,174 Último mensaje 9 Febrero 2020, 00:16 am
por ivancea96
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines