Fortran Coder

查看: 2487|回复: 4
打印 上一主题 下一主题

[文件读写] 将数据写入二进制文件后,怎么正确地读出来?

[复制链接]

54

帖子

0

主题

0

精华

实习版主

F 币
653 元
贡献
214 点

元老勋章新人勋章

QQ
楼主
发表于 2022-10-7 17:07:03 | 显示全部楼层
用 sequential 方式写入的数据,前后会多一个 integer 来表示当前记录的长度。
所以用 stream 读取的时候,需要用一个 integer 来占位。(例子中的m)

[Fortran] 纯文本查看 复制代码
Program PointTS
  Implicit none
  Integer(kind=4) :: i, j, k = 0, m
  Real(kind=8)    :: EETIME=1,EETIME_1
  Integer(kind=4), Allocatable,dimension(:,:) :: KSZ_Global, KSZ_Global_1
  Allocate(KSZ_Global(2,3),KSZ_Global_1(2,3))
  Do i = 1, 3
    Do j = 1,2
      KSZ_Global(j,i) = i+j+k
      k = k + 1
    End Do
  End Do
  Open(Unit=32,File="Matrix.bin",Status="replace",Access='sequential',FORM='unformatted')
  Do k = 1, 3
    Write(32) EETIME
    Write(32) KSZ_Global
    EETIME =  EETIME + 1.0
    KSZ_Global = KSZ_Global + 1
  End Do
  Close(32)
  Open(Unit=32,File="Matrix.bin",Status="old",Access='stream')
  Do k = 1, 3
    Read(32)   m,EETIME_1,m
    Read(32)   m,KSZ_Global_1,m
    Write(*,*) EETIME_1
    Write(*,*) KSZ_Global_1
  End Do
  Close(32)
End Program PointTS

评分

参与人数 1F 币 +3 收起 理由
fcode + 3 教科书级别~

查看全部评分

您需要登录后才可以回帖 登录 | 极速注册

本版积分规则

捐赠本站|Archiver|关于我们 About Us|小黑屋|Fcode ( 京ICP备18005632-2号 )

GMT+8, 2024-5-4 17:04

Powered by Tencent X3.4

© 2013-2024 Tencent

快速回复 返回顶部 返回列表