【问题标题】:Fortran: Reading unformatted dataFortran:读取未格式化的数据
【发布时间】:2014-06-12 01:58:39
【问题描述】:

我有一个大的 txt 文件,其中包含不同站点的经度/纬度测量值,例如:

 1  1 bwb02 52.38783333 13.40266667 LR 0.2
 2  2 bwb04 52.53716667 13.22583333 P1 0
 3  3 bwb05 52.55516667 13.202 SP 0
 4  4 bwb07 52.48433333 13.4385 N1 0

我只想读取 4,5 和 7 列并将它们放入一个矩阵中,例如:

  do j = 1,n
   read(12,200) latB,lonB,r
   200 Format (12x,f11.9,1x,f11.9,4x,f5.3)
   beo_data(j,1) = j
   beo_data(j,2) = lonB
   beo_data(j,3) = latB
   beo_data(j,4) = r
  end do

但我的格式不起作用,我收到一个错误: Fortran 运行时错误:浮点读取期间值错误

问题似乎是经度和纬度的格式正在改变。 你能告诉我如何阅读和使用这样的文件吗?

【问题讨论】:

    标签: fortran


    【解决方案1】:

    只需使用a 描述符将每一行作为字符串读取,然后您可以使用列表导向读取(* 而不是格式)读取数据。或者你可以直接使用列表定向读取,如果一次读取两行没有危险的话。

    integer :: tmp1,tmp2
    character(5) :: tmp3
    character(2) :: tmp4
    real :: values(3)
      open(12,file="data.txt")
      do j = 1,4
       read(12,*) tmp1, tmp2, tmp3, values(1), values(2), tmp4, values(3)
       print *,values
      end do
      close(12)
    end
    

    打印

       52.3878326       13.4026670      0.200000003    
       52.5371666       13.2258329       0.00000000    
       52.5551682       13.2019997       0.00000000    
       52.4843330       13.4385004       0.00000000
    

    仅当列确实固定时,使用固定列格式才有用。

    您也可以只使用单个字符变量tmp 而不是所有这些不同的变量。

    【讨论】:

      猜你喜欢
      • 2013-02-14
      • 1970-01-01
      • 2013-06-01
      • 2014-08-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-09-03
      • 2021-09-18
      相关资源
      最近更新 更多