水源配置菜鸟 发表于 2018-4-16 11:46:39

数据读取有重复,求大家指导

求助各位大佬:我一共需要读入10个数据,先读取前7个(GroupID、Policy...VolOrFlow),做一次判断之后,读取7个空(7个aVar),再接着读取剩余的3个数据(Seep、MaxQ、LakeQ)。前7个数据读取正常,但是后3个数据读取的是第7、8、9位置的数据(而不是预想的8、9、10位置的数据),这是为啥呢?

kyra 发表于 2018-4-16 12:48:51

根据前面的数据判断后面是否读取,有个投机取巧的办法:

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

水源配置菜鸟 发表于 2018-4-16 14:58:05

非常感谢您的回复,您提供的方法可以帮助我解决眼下的问题了。我看的源码里面有很多地方都是像上面那样写的,您对这种写法和运行后出现的错误有什么见解呢?期待您的回复:-lol
页: [1]
查看完整版本: 数据读取有重复,求大家指导