Fortran:读取未格式化数据
我有一个大型txt文件,其中包含不同站点的经度/纬度测量值,如:Fortran:读取未格式化数据,fortran,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,
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运行时错误:浮点读取期间的值不正确
问题似乎是经纬度的格式正在改变。
您能告诉我如何读取和处理这样的文件吗?只需使用
描述符将每一行作为字符串读取,然后您就可以使用列表定向读取(*
而不是格式)来读取数据。如果不存在同时从两行读取的危险,也可以使用列表定向直接读取
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
,而不使用所有这些不同的变量