Autor
|
Tema: Problema de ejecución en C (Leído 1,930 veces)
|
Gerardovf78
Desconectado
Mensajes: 2
|
Buenas, estoy intentando hacer un programa que cree una lista y que permita introducir un número de teléfono, un nombre y una edad, sin embargo, aunque compile, se crashea nada más ejecutarlo. El código es el siguiente: #include <stdio.h> #include <stdlib.h> #include <windows.h>
struct Datos{ char *nombre; int edad; double telef; struct Datos *sig; };
typedef struct Datos miembro;
miembro *CrearMiembro(miembro *Lista, double telefono, int años, char name){ miembro *NuevoMiembro, *aux; NuevoMiembro = (miembro *) malloc(sizeof(miembro)); if(NuevoMiembro != NULL){ NuevoMiembro->edad = años; NuevoMiembro->telef = telefono; NuevoMiembro->nombre = name; NuevoMiembro->sig = NULL; } if (Lista == NULL){ Lista = NuevoMiembro; } else{ aux = Lista; while(aux->sig != NULL){ aux = aux->sig; } aux = NuevoMiembro; } return Lista; }
void ImprimirLista(miembro *Lista){ miembro *aux; aux = Lista; printf("La Lista contiene los siguientes datos: \n"); while(aux!=NULL){ printf("Edad: %d Telefono: %d Nombre: %s -> \n", aux->edad, aux->telef, aux->nombre); aux = aux->sig; } printf("NULL"); }
int main(){ miembro *Lista1; char Nombre[20]; int age; double teleph; Lista1->edad = 19; Lista1->telef = 657485748; Lista1->nombre = {"Alfonso"}; Lista1->sig = NULL; printf("Indique el nombre que quiere introducir: "); scanf("%s", Nombre); printf("\n"); fflush(stdin); printf("Indique el telefono: "); scanf("%d", &teleph); printf("\n"); printf("Indique la edad: "); scanf("%d", &age); Lista1 = CrearMiembro(Lista1, teleph, age, *Nombre); ImprimirLista(Lista1); system("PAUSE"); } Creo que tiene que ver con la igualación de una cadena a un puntero, pero no sé solucionarlo.
|
|
|
En línea
|
|
|
|
ivancea96
Desconectado
Mensajes: 3.412
ASMático
|
Busca la línea exacta que da el problema colocando pausas al programa.
A todo esto, normaliza la forma de nombrar variables, estructuras y funciones. Poner variables con mayusculas, otras con minusculas y otras con caracteres como 'ñ' puede dar problemas, desde problemas de legibilidad, hasta pequeños problemas al compilar.
|
|
|
En línea
|
|
|
|
Gerardovf78
Desconectado
Mensajes: 2
|
miembro *CrearMiembro(miembro *Lista, double telefono, int años, char name){ miembro *NuevoMiembro, *aux; NuevoMiembro = (miembro *) malloc(sizeof(miembro)); if(NuevoMiembro != NULL){ NuevoMiembro->edad = años; NuevoMiembro->telef = telefono; //NuevoMiembro->nombre = name; NuevoMiembro->sig = NULL;
El problema está en la línea comentada, y es el siguiente: [Error] invalid conversion from 'char' to 'char*' [-fpermissive]
|
|
« Última modificación: 25 Junio 2015, 15:44 pm por Gerardovf78 »
|
En línea
|
|
|
|
ivancea96
Desconectado
Mensajes: 3.412
ASMático
|
Pero dijiste que lo habías compilado :/
En cualquier caso, name es un char. No tendría que ser un char. En todo caso un char*.
Para copiar un char no basta un '='. Debes asignarle memoria con malloc(), y luego copiar caracter a caracter, hasta encontrar un '\0'.
Sinó, también puedes usar strcpy(), pero tendrás que utilizarle malloc() antes igualmente. El tamaño a copiar lo puedes obtener con strlen(), que calcula caracteres hasta el '\0'. Tendrás que sumarle 1 al strlen() para añadir el '\0' en la nueva cadena.
Y no olvides liberar memoria antes de liberar la estructura.
|
|
|
En línea
|
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
Problema de ejecución
Programación C/C++
|
blue_net
|
4
|
2,595
|
24 Julio 2013, 15:11 pm
por blue_net
|
|
|
Problema en ejecucion
Programación C/C++
|
vaneexd
|
2
|
2,652
|
19 Noviembre 2013, 02:43 am
por rir3760
|
|
|
Problema de ejecucion de .bat y de scripts
.NET (C#, VB.NET, ASP)
|
jlewis09
|
1
|
1,916
|
17 Noviembre 2015, 19:19 pm
por _TTFH_3500
|
|
|
Problema con ejecución de .bat ayuda
Scripting
|
MC.cover
|
1
|
1,978
|
12 Enero 2016, 07:45 am
por Eleкtro
|
|
|
problema en ejecucion: ahorcado
Programación C/C++
|
priskot17
|
0
|
1,461
|
20 Octubre 2016, 21:14 pm
por priskot17
|
|