我正在尝试使用以下代码读取文件,但文件结尾出现错误
real u,v,rs,rd
open (10,file='AD02.txt',status='old')
open(12,file='AD02_1.txt',status='unknown')
pi=atan(1.0e00)*4.0
rad=pi/180.0
100 read(10,*,end=98)u,v
rs=sqrt((u*u)+(v*v))
if (v.eq.0.) then
if (u.gt.0)then
rd = 90
else
rd=270
endif
go to 101
end if
rd=(atan(u/v))/rad
if((u.ge.0.).and.(v.lt.0.))
+ rd=rd+180.
if((u.lt.0.).and.(v.lt.0.))
+ rd=rd+180.
if((u.lt.0.).and.(v.ge.0.))
+ rd=rd+360.
if((u.eq.0.).and.(v.eq.0.))
+ rd=0.
101 rd=rd+180.0
if(rd.ge.360.0) rd=rd-360.0
c write(12,*)rs,rd
write(12,*)u,v,rs,rd
goto 100
98 close(10)
99 close(11)
stop
end
它给出了文件结尾错误
样品输入:
1/1/2017 20:00 -2 -2.7 3.360059523 36.45608472
1/1/2017 21:00 -1.71 -2.74 3.229814236 31.89269113
1/1/2017 22:00 -1.04 -3.48 3.632079294 16.5559465
1/1/2017 23:00 -0.67 -4.09 4.144514447 9.216650926
1/2/2017 0:00 -0.73 -4.51 4.568697845 9.107662714
1/2/2017 2:00 -1.04 -5.35 5.450146787 10.91495543
最多n个值
请帮助我解决这个问题
答案 0 :(得分:3)
正如@albert所建议的,日期是问题所在。 READ不仅假装日期(和时间)不存在,而且列表导向输入中的斜杠会终止读取。您想使用显式格式-以下工作原理:
100 read (10,'(T18,2F8.2)',end=98) u,v
我还将评论说,您不应使用固定格式的源代码进行编码,并且如果您在此处粘贴代码,则必须知道列的位置。我必须对您的代码进行大量编辑才能使其编译。