回 帖 发 新 帖 刷新版面

主题:[讨论]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,搞不明白

回复列表 (共2个回复)

沙发

你好.我是全职网赚工作者.
如果你有时间有电脑.
想在网络上创业.请联系我..
项目绝对真实.详情QQ空间资料
加盟请联系 QQ908889846

板凳

是不是你输出到二进制文件的NP是Integer*4,而你结构体中的NP是short?

我来回复

您尚未登录,请登录后再回复。点此登录或注册