• Domingo 28 de Abril de 2024, 17:44

Autor Tema:  Problemilla con Estructuras?  (Leído 1497 veces)

Comodoro

  • Miembro activo
  • **
  • Mensajes: 73
    • Ver Perfil
Problemilla con Estructuras?
« en: Martes 5 de Abril de 2011, 13:23 »
0
Hola Camaradas estoy practicando Lenguaje C, y realice un Programita utilizando Estructura. Le pongo el codigo y les explico el Problemilla!

Código: C
  1.  
  2. #include<stdio.h>
  3. #define ELEMENTOS 3
  4.  
  5. typedef struct datos;
  6.  
  7. typedef struct datos{
  8.         char nombre[13];
  9.         char apellido[13];
  10.         int edad;
  11.         char sexo;
  12.         float altura;
  13. }inf_datos;
  14.  
  15. inf_datos alumno[ELEMENTOS];
  16.  
  17. main(){
  18.  
  19.     printf(" INTRODUZCA LOS DATOS DEL ALUMNO ");
  20.     printf("nn");
  21.     for(int i=0;i<ELEMENTOS;i++){
  22.         printf("Datos del Amigo Numero %i: ",i+1);
  23.         printf("n");
  24.         printf("Digite el Primer Nombre: ");
  25.         scanf("%s",&alumno[i].nombre);
  26.         printf("Digite el Primer Apellido: ");
  27.         scanf("%s",&alumno[i].apellido);
  28.         printf("Digite la Edad: ");
  29.         scanf("%i",&alumno[i].edad);
  30.         printf("Digite el Sexo: ");
  31.         scanf("%s",&alumno[i].sexo);
  32.         printf("Digite la Altura: ");
  33.         //scanf("%f",&alumno[i].altura);
  34.         printf("nn");
  35.         while(getchar()!= 'n');    // Vacía el buffer de entrada
  36.     }
  37.  
  38.     //Impresion de los datos
  39.     for(int j=0;j<ELEMENTOS;j++){
  40.         printf("nEl Nombre del Alumno es: %s",alumno[j].nombre);
  41.         printf("nEl Apellido del Alumno es: %s",alumno[j].apellido);
  42.         printf("nEl Nombre del Alumno es: %s",alumno[j].edad);
  43.         printf("nEl Apellido del Alumno es: %s",alumno[j].sexo);
  44.         //printf("nEl Apellido del Alumno es: %s",alumno[j].altura);
  45.     }
  46. }
  47.  
  48.  
 

Bueno como pueden ver es un programita bastante sencillo, pero me ha surgido un Errorcillo el cual no logro solucionar, se que debe ser bastante estupido. El hecho es que cuando estoy Ingresando los Datos y llego a altura la ventana se cierra, es decir termina la ejecucion del programita. Si lo pongo como comentario la parte en que Ingresa la Altura si funciona, lo mismo tengo que hacer a la hora de Imprimir los Datos. No se por que, si me pudieran Iluminar.

Les agradeceria.

Leber

  • Miembro activo
  • **
  • Mensajes: 65
    • Ver Perfil
Re: Problemilla con Estructuras?
« Respuesta #1 en: Martes 5 de Abril de 2011, 14:23 »
0
Tu código tiene bastantes errores, y son más de atención que no de otra cosa.

Por empezar:

Código: C
  1. typedef struct datos
  2.  

Esto no sirve de nada si luego haces esto:

Código: C
  1. typedef struct datos{
  2.         char nombre[13];
  3.         char apellido[13];
  4.         int edad;
  5.         char sexo;
  6.         float altura;
  7. }inf_datos;
  8.  

Para coger cadenas con scanf, se hace:

Código: C
  1. scanf("%s",alumno[i].apellido);
  2.  

Y no:

Código: C
  1. scanf("%s",&alumno[i].apellido);
  2.  

Luego, el campo sexo es de 1 byte, y tu estas cogiendo como una cadena de bytes:

Código: C
  1. scanf("%s",&alumno[i].sexo);
  2.  

Debería ser:

Código: C
  1. scanf("%c",&alumno[i].sexo);
  2.  

Añadiendole más leña:

Código: C
  1. printf("nEl Nombre del Alumno es: %s",alumno[j].edad);
  2.  

edad es de tipo entero, por qué lo muestras como si fuera una cadena?

Creo que deberías coger un libro y mirartelo un poco, ya que son errores de no prestar atención.

Saludos