You have to learn how to use file headers.
Example:
typedef struct
{
char magic[4];
unsigned int cbheader;
unsigned int version; enum{ CURRENTVERSION=1, };
unsigned int array_count;
} MYFILEHEADER;
#define MYMAGIC "abcd"
void writemyfile(IStream* pstream,int* array,const unsigned int count)
{
MYFILEHEADER h = { MYMAGIC, sizeof(MYFILEHEADER), MYFILEHEADER::CURRENTVERSION, };
unsigned long w;
h.array_count = count;
stream->Write(&h,sizeof(h),&w);
stream->Write(array,sizeof(int)*count,&w);
}
unsigned int readmyfile(IStream* pstream,int** array)
{
MYFILEHEADER h;
unsigned long r;
*array = 0;
if(S_OK!=stream->Read(&h,sizeof(h),&r)) || (sizeof(h)!=r)) return 0;
if((h.cbheader!=sizeof(h)) || memcmp(MYMAGIC,h.magic,sizeof(h.magic))) return 0;
if(h.version!=MYFILEHEADER::CURRENTVERSION) return 0;
*array = malloc(sizeof(int)*h.array_count);
if( (S_OK!=stream->Read(*array,sizeof(int)*h.array_count,&r)) ||
((sizeof(int)*h.array_count)!=r))
{
free(*array); *array = 0; return 0;
}
return h.array_count;
}
Good luck.