- 积分
- 678
- 贡献
-
- 精华
- 在线时间
- 小时
- 注册时间
- 2013-5-13
- 最后登录
- 1970-1-1
|
Fortran
系统平台: |
fortran |
问题概况: |
程序如下,读的时候出现报错,end of file during read. |
问题截图: |
- |
我看过提问的智慧: |
看过 |
自己思考时长(天): |
4 |
登录后查看更多精彩内容~
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
program getdata
implicit none
character*40 filename
character*100 fpath,output
integer :: status,k=0,su,error,i,t,vv
integer,allocatable::v1(:),v2(:),v3(:),v4(:)
fpath='f:\gxm\dabaoyu\*.TXT'
output='f:\gxm\dir.txt'
call ListToFile(fpath,output)
open(3,file='f:\gxm\dir.txt')
do
read(3,*,iostat=status) filename
print*,filename
open(2,file='f:\gxm\su\'//filename,status='replace')
if(status/=0) exit
open(1,file='f:\gxm\dabaoyu\'//filename,status='old')
i=1
do
read(1,*,iostat=error)
if(error/=0) exit
i=i+1
end do
t=i
print*,t
allocate(v1(t-1))
allocate(v2(t-1))
allocate(v3(t-1))
allocate(v4(t-1))
print*,filename
print*,v1(t-1)
do i=1,t-1
read(1,*) v1(i),v2(i),v3(i),v4(i)
print*,v1(i)
enddo
i=1
vv=v2(1)
su=0
do while(t<=i)
if(v2(i)==vv) then
su=su+v4(i)
else
print*,v1(i-1),v2(i-1),su
vv=v2(i)
su=0
end if
i=i+1
end do
close(1)
close(2)
end do
close(3)
end
!输入并保存数据文件名的子程序
subroutine ListToFile(Fpath,Output)
character*100::Fpath,Output
character*100 CMD
logical(4) res
CMD="dir /b "//trim(fpath)//">"//trim(output)
res=SYSTEMQQ(CMD)
endsubroutine
其中子程序是自动生成dir.txt的,dir.txt里面是若干个文件名,用于批量读取filename文件(之前试过,是可以用的)。红色那一行在读入的时候报错(因为之后那一行print*,v1(i)没有执行,也就是说第一行都没有读入)文件的情况大致截取一个片段如下:
56187 2004 4 454
56187 2004 5 744
56187 2004 5 282
56187 2004 5 441
56187 2004 6 283
56187 2004 7 278
56187 2004 8 891
56187 2004 8 293
56187 2004 8 328
56187 2004 10 365
56187 2005 6 565
56187 2005 6 608
56187 2005 7 433
56187 2005 7 530
56187 2005 8 495
56187 2005 8 281
56187 2005 8 349
56187 2006 5 263
56187 2006 6 286
56187 2006 7 568
56187 2006 7 761
56187 2006 7 770
56187 2006 10 272
56187 2007 5 419
56187 2007 5 255
56187 2007 6 266
56187 2007 7 306
56187 2007 8 389
56187 2008 6 422
56187 2008 7 373
56187 2008 7 566
程序的目的是给第四列数据按照年份求和,不知道哪位大神愿意帮帮我呢。
|
|