I am implementing a simple serialization and deserialization program, but I am getting an error during deserialization, as segmentation fault(core dumped).
I am using '|' as a delimiter, to retrieve the data. I think I am making a mistake while putting the data back into the member variable.
I will be trying to send the data over a socket as the next step
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#define MAX 100
typedef struct Frame
{
char p[MAX];
char q[MAX];
char r[MAX];
}frame;
void serial(char [] , frame*);
void deserial(char [], frame*);
int main ()
{
char buffer [MAX];
int i = 0;
frame* packet1;
frame* packet2;
char temp[sizeof(frame)];
strcpy(packet1->p, "1234");
strcpy(packet1->q, "qwerty");
strcpy(packet1->r, "abcdef");
serial( temp, packet1);
deserial( temp, packet2);
return 0 ;
}
void serial ( char temp[], frame * packet1)
{
char* p = temp;
int len ;
int i=0;
len = strlen (packet1->p);
while ( i<len)
{
*p = packet1->p[i];
p++;
i++;
}
strcat(p,"|");
p++;
i = 0;
len = strlen (packet1->q);
while ( i<len)
{
*p = packet1->q[i];
p++;
i++;
}
strcat(p,"|");
p++;
i = 0;
len = strlen (packet1->r);
while ( i<len)
{
*p = packet1->r[i];
p++;
i++;
}
strcat(p,"|");
return;
}
void deserial ( char temp[], frame *packet2)
{
char *str = temp;
int i= 0 ;
char delimit[]="|";
printf("\n");
while (*str!='|')
{
printf ("%c\n", *str);
packet2->p[i] = *str; //error here
str++;
i++;
}
}