I would like to store my struct data by converting as a char typed data. In order to do that I've tried to write a serialization program but whenever i debug i see different values on my data structure. Could some expert can make a comment on this i can't see what i am missing here.
Thanks in advance.
Thanks in advance.
Code:
#include <stdio.h> #include <stdlib.h> #include <string.h> #include <signal.h> #include <assert.h> #include "limits.h" #define BUFFERSIZE 256 #define PACKETSIZE sizeof(cloudMessage) typedef struct cloudMessage { int station_id; int location_area; char command[BUFFERSIZE]; }cloudMessage; void serialize(cloudMessage *message, char *data); void deserialize(char *data, cloudMessage *message); void printMyMessage(cloudMessage* message); void serialize(cloudMessage *message, char *data) { data = (char*)malloc(sizeof(message)); assert(data != NULL); memcpy(data, &message, sizeof(message)); } void deserialize(char *data, cloudMessage *message) { memset(message, 0, sizeof(data)); memcpy(message, &data, sizeof(cloudMessage)); } void printMyMessage(cloudMessage *message) { printf((void*)message->location_area); printf((void*)message->station_id); printf((void*)message->command); } int main() { cloudMessage *newcloudMessage = malloc(sizeof(cloudMessage)); newcloudMessage->location_area = 7214; newcloudMessage->station_id = 45632; strcpy(newcloudMessage->command, "HANDOVER\0"); char data[PACKETSIZE]; serialize(newcloudMessage, data); cloudMessage *tempMessage = malloc(sizeof(cloudMessage)); // To store deserialized message. deserialize(data, tempMessage); printMyMessage(tempMessage); return 0; }
Comment