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.