我有一个格式如下的文本文件:
1 2
3 4 5
6 7
许多行等等。
我运行这个fortran程序:
i=1
tt=1
do while(.true.)
read(unit=1,*,IOSTAT=status) lon(i,tt),lat(i,tt),h(i,tt)
i=i+1
if(status/=0)exit
enddo
我想在同一行中为lon
,lat
,h
分配三个数字。但是,因为第一行没有第三个元素,程序将读取第二行中的第一个元素(即3到h(i,tt)),这不是我想要的。我希望将h(i,tt)设置为某些行中的缺失值
我该怎么做?
答案 0 :(得分:1)
对于您的具体示例,您可以尝试这样的事情:
program test
integer :: status, i, tt
character(len=100) :: line
integer :: lon(3, 1), lat(3, 1), h(3, 1)
lon(:, :) = 0
lat(:, :) = 0
h(:, :) = 0
open(unit=1, file='data.txt')
i=1
tt=1
do
read(1, '(A100)', iostat=status) line
if(status/=0) exit
read(line, *, iostat=status) lon(i, tt), lat(i, tt), h(i, tt)
if(status/=0) then
read(line, *) lon(i, tt), lat(i, tt)
h(i, tt) = 1 ! default value
end if
i = i + 1
end do
print *, 'lon=', lon
print *, 'lat=', lat
print *, 'h=', h
end program test
返回
lon= 1 3 6
lat= 2 4 7
h= 1 5 1