• Viernes 8 de Noviembre de 2024, 09:57

Autor Tema:  Segmentation Fault En Programa C  (Leído 893 veces)

Bond

  • Nuevo Miembro
  • *
  • Mensajes: 4
    • Ver Perfil
Segmentation Fault En Programa C
« en: Miércoles 29 de Agosto de 2007, 08:10 »
0
Un saludo a todos.


En un programa de c muy básico sobre estructuras, obtengo un segmentation fault en la ejecución y no soy capaz de ver el fallo.

El programa es este:

Código: Text
  1.  
  2. #include <stdio.h>
  3.  
  4. struct fecha
  5. {
  6.    int dia, mes, anyo;
  7. };
  8.  
  9. struct ficha
  10. {
  11.    char nombre[40];
  12.    char direccion[40];
  13.    long telefono;
  14.    struct fecha fecha_nacimiento;
  15. }tficha;
  16.  
  17.  
  18. int main()
  19. {
  20.    struct ficha persona, otra_persona;
  21.  
  22.    
  23.    printf("Nombre:  ");
  24.    gets(persona.nombre);
  25.    printf("Direccion:  ");
  26.    gets(persona.direccion);
  27.    printf("telefono:  ");
  28.    scanf("%ld", &persona.telefono);
  29.    printf("Fecha nacimiento:\n");
  30.    printf("Dia:    ");
  31.    scanf("%d", persona.fecha_nacimiento.dia);
  32.    printf("Mes:    ");
  33.    scanf("%d", persona.fecha_nacimiento.mes);
  34.    printf("Anyo    ");
  35.    scanf("%d", persona.fecha_nacimiento.anyo);
  36.    
  37.    
  38.    otra_persona = persona;
  39.  
  40.    
  41.    printf("\n\n");
  42.    printf("Nombre:  %s\n", otra_persona.nombre);
  43.    printf("Direccion:   %s\n", otra_persona.direccion);
  44.    printf("Telefono:  %ld\n", otra_persona.telefono);
  45.    printf("FEcha nacimiento\n");
  46.    printf("dia:    %d\n", otra_persona.fecha_nacimiento.dia);
  47.    printf("mes:    %d\n", otra_persona.fecha_nacimiento.mes);
  48.    printf("anyo:  %d\n", otra_persona.fecha_nacimiento.anyo);
  49.  
  50. }
  51.  
  52.  


Como podéis ver lo único que hace este programa es crear 2 estructuras, introducir datos en una através del teclado, copiar una a otra, y después imprimir la última por monitor.



Todo compila bien y a la hora de ejecución pasa esto:

Código: Text
  1.  
  2. debian$ ./e1
  3. Nombre: sonny
  4. Direccion:      av america
  5. telefono:       33333333
  6. Fecha nacimiento:
  7. Dia:            5
  8. Mes:            5
  9. Segmentation fault
  10.  
  11.  
  12.  


No consigo ver que estoy haciendo mal.


Gracias anticipadas.

Eternal Idol

  • Moderador
  • ******
  • Mensajes: 4696
  • Nacionalidad: ar
    • Ver Perfil
Re: Segmentation Fault En Programa C
« Respuesta #1 en: Miércoles 29 de Agosto de 2007, 09:07 »
0
Asi como hiciste:
&persona.telefono

Tenes que hacer lo mismo con la fecha, pasarle la direccion de memoria y no el valor a scanf.

Nacional y Popular En mi país la bandera de Eva es inmortal.


Queremos una Argentina socialmente justa, económicamente libre y  políticamente soberana.
¡Perón cumple, Evita dignifica!


La mano invisible del mercado me robo la billetera.

Bond

  • Nuevo Miembro
  • *
  • Mensajes: 4
    • Ver Perfil
Re: Segmentation Fault En Programa C
« Respuesta #2 en: Miércoles 29 de Agosto de 2007, 09:49 »
0
Cita de: "Eternal Idol"
Asi como hiciste:
&persona.telefono

Tenes que hacer lo mismo con la fecha, pasarle la direccion de memoria y no el valor a scanf.
Gracias Eternal Idol, vaya fallo más tonto y lo peor que ni lo encontraba :(

Un saludo

Eternal Idol

  • Moderador
  • ******
  • Mensajes: 4696
  • Nacionalidad: ar
    • Ver Perfil
Re: Segmentation Fault En Programa C
« Respuesta #3 en: Miércoles 29 de Agosto de 2007, 09:59 »
0
De nadas  B) Lo que hice fue depurarlo y ver en que punto fallaba.

Nacional y Popular En mi país la bandera de Eva es inmortal.


Queremos una Argentina socialmente justa, económicamente libre y  políticamente soberana.
¡Perón cumple, Evita dignifica!


La mano invisible del mercado me robo la billetera.