Fortran:阅读未格式化的数据

时间:2014-04-26 08:38:57

标签: fortran

我有一个大的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运行时错误:浮点读取期间的值不正确

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

1 个答案:

答案 0 :(得分:2)

使用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而不是所有不同的变量。