根据前面的数据判断后面是否读取,有个投机取巧的办法:
[Fortran] 纯文本查看 复制代码 character(len=80) c
integer :: a(10) = -999 , j , is
c = "1 2 1 4 5 6 7 8 9 10" !//有10个数
read( c , * ) a(:7) , ( a(8:),j=1,Is(a(3)==1,1,0) )!//如果a(3)==1,则读10个数
write(*,*) a
a = -999
c = "1 2 0 4 5 6 7"!//只有7个数
read( c , * ) a(:7) , ( a(8:),j=1,Is(a(3)==1,1,0) )!//如果a(3)/=1,则只读7个。
write(*,*) a
end
Integer Function Is( b , t ,f )!//如果b为真,返回t,否则返回f。类似于C语言的 a ? b : c
logical :: b
integer :: t , f
Is = f
if( b ) Is = t
End Function Is |