主题:[讨论]C++读fortran生成的二进制文件出现问题
我用C++调用Fortran的动态库生成一个二进制的数据文件,再用C++读取显示,但是读取有问题
求教
源代码如下:
if(dlg.DoModal()==IDOK)
{
meshfile=dlg.GetPathName();
infile.open(meshfile,ios::in|ios::binary);
infile.read((char *)(&m_public.NP),sizeof(m_public.NP));
for(i=0;i<1000000;i++)
for(j=0;j<4;j++)
m_public.IP[i][j]=0;
for(i=0;i<1000000;i++)
for(j=0;j<10;j++)
m_public.NEM[i][j]=0;
for( k = 0; k < m_public.NP; k++ )
{
for( i = 0 ; i < 4 ; i++ )
{
if ( i = 0 )
m_public.IP[k][0] = k+1 ;
else infile.read((char *)(&m_public.IP[k][i]),sizeof(m_public.IP[k][i]));
}
}
infile.read((char *)(&m_public.NE),sizeof(m_public.NE));
for( k = 0; k < m_public.NE; k++ )
{
for( i = 0 ; i < 10 ; i++ )
{
if ( i = 0 )
m_public.NEM[k][0] = k+1 ;
else infile.read((char *)(&m_public.NEM[k][i]),sizeof(m_public.NEM[k][i]));
}
}
infile.close();
}
m_public.NP应该是40000,结果只读出4,搞不明白
求教
源代码如下:
if(dlg.DoModal()==IDOK)
{
meshfile=dlg.GetPathName();
infile.open(meshfile,ios::in|ios::binary);
infile.read((char *)(&m_public.NP),sizeof(m_public.NP));
for(i=0;i<1000000;i++)
for(j=0;j<4;j++)
m_public.IP[i][j]=0;
for(i=0;i<1000000;i++)
for(j=0;j<10;j++)
m_public.NEM[i][j]=0;
for( k = 0; k < m_public.NP; k++ )
{
for( i = 0 ; i < 4 ; i++ )
{
if ( i = 0 )
m_public.IP[k][0] = k+1 ;
else infile.read((char *)(&m_public.IP[k][i]),sizeof(m_public.IP[k][i]));
}
}
infile.read((char *)(&m_public.NE),sizeof(m_public.NE));
for( k = 0; k < m_public.NE; k++ )
{
for( i = 0 ; i < 10 ; i++ )
{
if ( i = 0 )
m_public.NEM[k][0] = k+1 ;
else infile.read((char *)(&m_public.NEM[k][i]),sizeof(m_public.NEM[k][i]));
}
}
infile.close();
}
m_public.NP应该是40000,结果只读出4,搞不明白