我有一个大的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运行时错误:浮点读取期间的值不正确
问题似乎是经度和纬度的格式正在发生变化。 你能告诉我如何阅读和使用这样的文件吗?
答案 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
而不是所有不同的变量。