Devo serializzare una struttura ma ci sto sbattendo la testa da ieri...

il codice č questo... il problema č che quando ri tira fuori i dati... sono tutti diversi e incomprensibili... qualcuno ha qualche idea?

codice:
struct buffer buf; 
main()
{
...
}
 
void serialize(struct buffer b) 
{ 
	int i= 0; 
	int end = 0;
	FILE *pFile; 
	
	printf("sono nella serialize(1)\n"); 
	if ((pFile=fopen("s.dat", "wb"))==NULL){ 
		printf("Il file non esiste!"); exit(1); 
	} 
	printf("sono nella serialize(2)\n"); 
	while(end=0)
	{
		fwrite(&b,sizeof(struct buffer),1,pFile); 
		end =1;
	}

	fclose(pFile); 
	printf("Ho anche chiuso il file\n"); 
} 
 
void deserialize() 
{
	struct buffer b; 
	int i= 0; 
	FILE *pFile2; 
	
	printf("sono nella deserialize(1)\n");	 
	
	if ((pFile2=fopen("s.dat", "rb"))==NULL){ 
		printf("Il file non esiste!"); exit(1); 
	} 
		printf("sono nella serialize(2)\n"); 
 
	while(!feof(pFile2)) 
	{ 
		fread(&b,sizeof(struct buffer),1,pFile2); 
	} 
	fclose(pFile2); 
	printf("1= %d; 2=%s; 3=%s; 4=%d; 5=%d; 6=%d;
		7='%s'\n", b.mtype,b.loginDest,
		b.loginMitt, b.msgid, b.pid, 
		b.status, b.mtext); 
	printBuffer(b);
	printf("Ho anche chiuso il file\n"); 
	//return buf; 
}