Fortran从c#读取二进制文件

本文关键字:二进制文件 读取 Fortran | 更新日期: 2023-09-27 18:16:14

我试图在fortran中读取二进制文件。该文件是用c#创建的。在下面的例子中,它只是存储为整数(我假设为4字节,因为创建的文件大小为8字节):

string binfile = @"c:'..'bindata.dat";
int nrecs = 60*60*24*61;
int nvalues = 34;
using (BinaryWriter bw = new BinaryWriter(File.Open(binfile, FileMode.Create)))
      {
        bw.Write(nrecs);
        bw.Write(nValues);        
      }
读取数据的fortran代码:
program TestFortran
    implicit none
    ! Variables
    character(*),parameter      ::  fn = "bindata.dat"
    integer                     ::  numMeas,numVals
    integer                     ::  infile,ios
    character(len=11)           ::   acc, seq, frm
    character(len=128)          ::  nam
    logical                     ::  ex,op
    integer                     :: irec, nr,p
    ! Body of TestFortran
    print *, 'Hello World'
    infile = 10
    open(unit = infile,file = fn,status='OLD',access='STREAM',FORM='UNFORMATTED',action='READ',iostat=ios)
    inquire(infile,err=99,exist=ex,opened=op,name=nam,access=acc,&
      sequential= seq, form = frm, recl=irec, nextrec=nr,pos=p)
    read(infile,IOSTAT=ios)  numMeas
    read(infile,IOSTAT=ios)  numVals
99  close(infile)
    write(*,'(a,i8,a,i6)')  "Number of measurements = ", numMeas, ", and number of values in a measurement = ", numVals
end program TestFortran

openinquire命令运行正常。在调试模式下,open之后报告ios为0,inquire之后报告acc = 'STREAM', ex = .true。, from =' un格式化',irec = -1, name是文件的完整路径,nr = 0, op = .true。, p = 1 and seq = 'YES'.

当我运行第一个读语句ios = -1表示文件结束,numMeas没有设置为任何东西,同样的读取语句2

有谁知道这里出了什么问题吗?每一个提示都是非常感激的。

Fortran从c#读取二进制文件

我真笨…在调试期间,我第一次尝试没有所有的验证,iostats,查询等。我也没有在打开语句中包括status='OLD',因此在../../(基本项目文件夹)中创建了一个0大小的文件,而不是我认为它应该在的地方(在/TestFortran/Debug/目录中)。很抱歉浪费了你们的时间。但是谢谢你的快速回复。