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