Ver Mensaje Individual
  #4 (permalink)  
Antiguo 14/02/2006, 00:35
MaxExtreme
 
Fecha de Ingreso: abril-2005
Mensajes: 3.083
Antigüedad: 19 años, 8 meses
Puntos: 17
Ahí voy ;)

el strcpy() ciertamente es como de debe hacer, pero hay otro problema: No has reservado la memoria para el char*. Por lo tanto, o haces otro malloc por cada char* de un TNodo, o declaras los char como un array con espacio predefinido [100] por ejemplo.

Lo mejor sería crear una función constructora:

Código:
TNodo * NewNodo()
{
    TNodo * ret = malloc(sizeof(TNodo));
    ret->pregunta = malloc(sizeof(char)*MAX_BUFFER);
    ret->respuesta = malloc(sizeof(char)*MAX_BUFFER);
    return ret;
}

void DeleteNodo(TNodo * p)
{
    free(p->pregunta);
    free(p->respuesta);
    free(p);
}
Esa manera permitiría expandir las cadenas en caso de que se quedasen pequeñas, o cosas así. Pero en estos casos veo más limpio usar:

Código:
typedef struct TipoNodo
{
char Pregunta[100];
char Respuesta[100];
struct TipoNodo *listaSi;
struct TipoNodo *listaNo;
}TNodo;
Aunque evidentemente ya no vas a poder modificar ese espacio y podría quedarse corto fácilmente.