我一直在寻找这段代码很长时间,似乎无法找到这个不起作用的原因......也许外人的看法可以提供帮助。
!I open File 1
!Opening File 1
open(2, File='File1.txt',status='old')
read(2,*)!File 1 header
PRINT*,'File1.txt read'
!Read it
DO b=1,nb
DO i=1,ni(b)
READ(2,*)dum(b,i),Qr(1,xbu(b),i),hr(1,xbu(b),i),Ar(1,xbu(b),i),Pr(1,xbu(b),i),dx(xbu(b),i),sx(xbu(b),i)
END DO
END DO
没关系。我已经打印过了,它就在那里。但是当我转到文件2时,做同样的事情:
PRINT*,'Reading File 2 '
open(3, File='File2.txt',status='old') !<- It stays here forever.
PRINT*,'File2.txt read'
这些文件是普通的txt,具有像这样的实际值
文件1:
11 0 0 0 0 6500 1.2
文件2
11 0.00 0.00 0.00 0.0
关于什么可能导致相同代码第二次失败的想法?
答案 0 :(得分:1)
你应该在那里抛出一些错误检查,试试
open(3, File='File2.txt',status='old',iostat=io_status, err=100)
某处放
100 write(*,*) 'io status = ', io_status
stop
我还建议编写一个函数来检查第一个可用的fortran单元号而不是硬编码,例如getting free unit number in fortran