Autor
|
Tema: Fallo en segmentación inexplicable (al menos para mi) (Leído 3,150 veces)
|
Gallu
Desconectado
Mensajes: 247
|
Hola a todos , ejecutando el siguiente programa me da un fallo en segmentación , alguien me podria decia a que se debe ? gracias de antemano #include <stdio.h> #include <string.h> #include <stdlib.h> typedef struct { char *nombre; char *direccion; int edad; char *dni; }type_persona; crear_cliente(type_persona *cliente){ char aux[50]; int aux2; printf("%s", "\nCreando cliente......\n"); printf("\nNombre del cliente :"); cliente ->nombre = (char*) malloc(strlen(aux ) * sizeof(char)); strcpy(cliente ->nombre , aux ); printf("\nDirección del Cliente:"); cliente ->direccion = (char*) malloc(strlen(aux )*sizeof(char*)); strcpy(cliente ->direccion , aux ); printf("\nEdad del Cliente:"); scanf("%d", &(cliente ->edad )); printf("\nsu edad es %d", cliente ->edad ); printf("\n Cliente creado !!!!"); } int main(){ type_persona *cliente; crear_cliente(cliente); printf("\n%s %s %s", cliente ->dni , cliente ->nombre , cliente ->direccion ); return 0; }
|
|
« Última modificación: 17 Julio 2010, 13:09 pm por Didacso »
|
En línea
|
Nadie alcanza la meta con un solo intento, ni perfecciona la vida con una sola rectificación, ni alcanza altura con un solo vuelo.
|
|
|
Og.
Desconectado
Mensajes: 822
Aprendiendo de la vida
|
crear_cliente(type_persona *cliente)
no tiene tipo de retorno. deberia ser: void crear_cliente(type_persona *cliente)
y al compilar en gcc no me da ningún Fallo de segmentación. Que compilador usas?
|
|
|
En línea
|
|-
|
|
|
cbug
Desconectado
Mensajes: 147
|
El fallo de segmentación luego de la muestra se debe a que no reservas el espacio en memoria para el puntero a la estructura, prueba añadiendo: cliente = (type_persona *)(malloc(sizeof(type_persona )));
|
|
|
En línea
|
|
|
|
Gallu
Desconectado
Mensajes: 247
|
Gracias por vuestras respuestas ... crear_cliente(type_persona *cliente)
no tiene tipo de retorno. deberia ser: void crear_cliente(type_persona *cliente)
y al compilar en gcc no me da ningún Fallo de segmentación. Que compilador usas? uso gcc y el error era al ejecutar, no al compilar , el prototipo del método crear cliente está en un .h , al postear el código olvide ponerlo El fallo de segmentación luego de la muestra se debe a que no reservas el espacio en memoria para el puntero a la estructura, prueba añadiendo: cliente = (type_persona *)(malloc(sizeof(type_persona )));
si, era esto lo que estaba fallando , gracias
|
|
|
En línea
|
Nadie alcanza la meta con un solo intento, ni perfecciona la vida con una sola rectificación, ni alcanza altura con un solo vuelo.
|
|
|
cbug
Desconectado
Mensajes: 147
|
De nada
|
|
|
En línea
|
|
|
|
nicolas_cof
Desconectado
Mensajes: 348
Into the Wild
|
Didacso, algunos consejos... > Utiliza strncpy() en vez de strcpy() https://foro.elhacker.net/programacion_cc/lo_que_no_hay_que_hacer_en_cc_nivel_basico-t277729.0.html> Nunca haces uso de la variable int aux2;> Tanto Didacso como cbug, no hace falta castear malloc() ya que esta devuelve un void* > En dni y direccion es sizeof( char ); no sizeof( char* );> Te falta asignar espacio para el caracter finalizador de cadena '\0' cliente->dni = malloc( (strlen( aux ) + 1) * sizeof( char ) ); > Acuerdate de liberar la memoria con free() para no dejar memory leaks Salu10.
|
|
|
En línea
|
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
[?] Fallo de segmentación - C
Programación C/C++
|
8789poli
|
3
|
4,641
|
14 Diciembre 2010, 19:50 pm
por 8789poli
|
|
|
Mensaje ¿nucleo? fallo de segmentacion ::: Desactivando la protección
GNU/Linux
|
Garfield07
|
2
|
3,321
|
1 Enero 2011, 01:03 am
por Garfield07
|
|
|
Fallo de segmentación al agregar mas nodos en una lista.
Programación C/C++
|
samur88
|
0
|
3,101
|
19 Enero 2011, 15:08 pm
por samur88
|
|
|
Fallo de segmentacion con fgets y Array de cadenas.
« 1 2 »
Programación C/C++
|
samur88
|
12
|
7,042
|
7 Marzo 2011, 00:37 am
por samur88
|
|
|
Fallo de segmentacion
Programación C/C++
|
_niu
|
9
|
5,448
|
29 Agosto 2011, 02:58 am
por _niu
|
|