把结构体存入txt文件中(打开是乱码),关闭程序,在运行时读取文件不能读取结构体中的数组值(z,)

把结构体存入txt文件中(打开是乱码),关闭程序,在运行时读取文件不能读取结构体中的数组值(z在线等,急!!)
把Hmm结构体存入txt文件中(打开是乱码),关闭程序,再运行时读取文件不能读取结构体中的数组值(z在线等,急!!)下面是我的代码
 CMyDIPView::OnSave()
  {
HMM Hmm;
  Hmm.A=new double*[N];//分配内存并初始化数组
for(int i=0;i<N;i++)
  Hmm.A[i]=new double[N];
  Hmm.B=new double*[N];//分配内存并初始化数组
for( i=0;i<N;i++)
  Hmm.B[i]=new double[M];
  Hmm.PI=new double[N];
for( i=0;i<N;i++)
for(int j=0;j<N;j++)
Hmm.A[i][j]=A[i][j];
   
  for(i=0;i<N;i++)
for(int t=0;t<M;t++)
Hmm.B[i][t]=B[i][t];
for(i=0;i<N;i++)
Hmm.PI[i]=PI[i];
Hmm.code1=Code1;
Hmm.code2=Code2;
  tmpScount = sizeof(Hmm);//全局变量用于保存Hmm模型的字节个数
  FILE *fp; 
  
  if((fp=fopen("C:\\text.txt","a+"))==NULL)  
  {  
 
  exit(0);  
  } 
  if(fwrite(&Hmm,sizeof(struct HMM),1,fp)!=1)  
  { } 
 
   
  fclose(fp);
}
void CIdentify2::read() 
{
// TODO: Add your control notification handler code here
  HMM Hmm;
 
  Hmm.A=new double*[N];//分配内存并初始化数组
for(int i=0;i<N;i++)
  Hmm.A[i]=new double[N];

  Hmm.B=new double*[N];//分配内存并初始化数组
for( i=0;i<N;i++)
  Hmm.B[i]=new double[M];

  Hmm.PI=new double[N];  
  double Probability ;

double **DELTA=new double*[TT3];//分配内存并初始化数组
for(int t=0;t<TT3;t++)
  DELTA[t]=new double[N];
   
int **PSI=new int*[TT3];
for(t=0;t<TT3;t++)
PSI[t]=new int[N];
 
 
  struct BHMM{ 
  char code1;  
  char code2;
double Probability; 

 
  }BHmm[100];  
 
   
int k=0;
char c1;
char c2;
tmpScount = sizeof(Hmm);
FILE *fp; //读文件
 
if((fp=fopen("C:\\text.txt","rb"))==NULL)//打开文件
{  
 
exit(0);  
}
 
fseek(fp,0,SEEK_END); //定位到文件末  

int nFileLen = ftell(fp); //文件长度  
 
int tmpCount1 = nFileLen / tmpScount ; //文件中结构体个数  

if(tmpCount1!=0)  
{  
 
for(i=0; i<tmpCount1; i++)  
{  
fseek(fp,tmpScount*i,SEEK_SET);  
 
if(fread(&Hmm,sizeof(struct HMM),1,fp)!=1) 

AfxMessageBox("1"); 
}  
  ViterbiLog(OBB,DELTA,PSI,Probability,Hmm.B,Hmm.A,Hmm.PI, N,TT3);//HMM.A,B,PI有问题 
BHmm[k].code1=Hmm.code1;
BHmm[k].code2=Hmm.code2;
BHmm[k].Probability=Probability;
k++;
}  
}
}

------解决方案--------------------
这个肯定不行。Hmm里有指针。