Hola!!!
Tengo un problema y si alguien puede ayudarme o pasarme alguna pagina donde pueda encontrar información se lo agradecería.
Tengo un puntero a una estructura que yo cree. Y necesito convertir el puntero a la estructura en un char* (ya que necesito enviarlo mediante una cola de mensajes), a continuación, deseo convertir el char* en un puntero a mi estructura (ya que se supone que desde otro proceso recibo los datos de la cola de mensajes) o por lo menos obtener los campos de ese char * de una forma facil.
Aqui les dejo lo más importante del codigo a ver si saben como podría solucionarlo.
//DEFINICION DE ESTRUCTURAS
typedef struct
{
char blanco;
char letra[2];
}letras;
typedef struct
{
char tipo_mensaje[2];
char id_servtomo[10];
char dir_ip[16];
int PID;
int puerto;
letras lista_de_letras[28];
}datos_alta;
datos_alta* datos_cola;
//DIMENSIONO LOS PUNTEROS A LAS ESTRUCTURAS
datos_cola = (datos_alta*)malloc(sizeof(datos_alta));
//ESTO CORRESPONDE A LA FUNCION QUE ENVIA LOS DATOS--> Estos datos los copio correctamente en datos_cola (ya que los muestro por pantalla y salen bien)
datos_cola->tipo_mensaje[1]=' ';
datos_cola->tipo_mensaje[0]='A';
datos_cola->PID=pid;
strcpy(datos_cola->dir_ip, ip);
datos_cola->puerto=puerto;
memcpy(datos_cola->lista_de_letras,(char*)list, sizeof(letras));
strcpy(datos_cola->id_servtomo, id);
//Para enviarlo mediante la cola de mensajes
char datos[2048];
memcpy(datos, datos_cola, sizeof(datos_cola));
//se supone que recibo los datos de una cola de mensajes en otra función distinta, lo más basico es lo siguiente.
datos_alta * peticion_recibida = (datos_alta*)malloc(sizeof(datos_alta));
//en datos es un char y obtengo los distintos datos.
char datos [2048]
memcpy(peticion_recibida, datos, sizeof(datos));
peticion_recibida->dir_ip;
peticion_recibida->id_servtomo;
peticion_recibida->PID;
El unico dato que se me muestra correctamente es peticion_recibida->tipo_mensaje . El resto de los datos sale 0,
excepto peticion_recibida->id_servtomo que muestra IDTOMO cuando debería mostrar IDTOMOS.
¿Alguna idea de donde esta el error?.
Gracias de todas formas por las molestias