Arrays f90 read.txt文件返回NaN
我正在尝试用fortran程序读取包含多个数组的.txt文件 看起来程序正在查找文件,但它只返回NaN值Arrays f90 read.txt文件返回NaN,arrays,fortran,nan,fortran90,readfile,Arrays,Fortran,Nan,Fortran90,Readfile,我正在尝试用fortran程序读取包含多个数组的.txt文件 看起来程序正在查找文件,但它只返回NaN值 ! INTEGER :: T, RH, i, j, ierror ! REAL, DIMENSION(3,3) :: AFILE ! LOGICAL :: dir_e inquire(file='PSR_FAB.txt', exist=dir
!
INTEGER :: T, RH, i, j, ierror
!
REAL, DIMENSION(3,3) :: AFILE
!
LOGICAL :: dir_e
inquire(file='PSR_FAB.txt', exist=dir_e)
if ( dir_e ) then
print*, "dir exists!"
else
print*, 'nope'
end if
OPEN (UNIT = 1234 , FILE = 'PSR_FAB.txt', STATUS = 'OLD', ACTION = 'READ')
DO i=1,3
READ(1234,*, IOSTAT=ierror) (AFILE(i,j),j=1,3)
print*, (AFILE(i,j),j=1,3)
! if (ierror>0) then
! stop 'Error while reading from file. '
! elseif (ierror<0) then
! print* ,PSR_FILE
! stop 'Reached end of file. '
! endif
ENDDO
CLOSE(UNIT=1234)
!
T=2
RH=3
print*,AFILE(T,RH)
!
此外,当我使用“ierror if test”时,“到达文件末尾”会弹出,这意味着ierror我在Windows 2000上运行程序时遇到了类似的问题,但在Windows 7框上工作正常 在我的情况下,应用程序是使用英特尔Fortran V11在Win7机器上构建的。此应用程序在Win7框上运行,但在Win2000框上运行时,无法读取前2个条目
尝试使用
/arch:IA32
选项进行编译。这将使用X87指令集而不是SSE2增强指令。这将生成一个在两种平台上都能工作的应用程序。可能是在文件开头以外的位置打开了PSR\u FAB.txt
文件。在不为open
语句指定POSITION=
属性的情况下,将采用文件位置ASIS
。但是,我不确定是什么条件导致ASIS
产生文件开头以外的位置
我建议指定文件在打开时重绕,包括:
OPEN (UNIT = 1234 , FILE = 'PSR_FAB.txt', STATUS = 'OLD', &
ACTION = 'READ', POSITION = 'REWIND')
但是,还有其他问题可能导致此问题(或类似问题)。代码对我来说很好。它读取数组,打印所有预期值,并且不点击
ierror
分支。如果缺少最后一行,请尝试为其添加行尾。您可以/应该信任iostat值——如果忽略它(即注释掉该代码),则看不到会发生什么。这里的一种可能性是您有一些访问/权限问题,例如,在windows下,该文件已经在文本编辑器中打开。这更合适,因为我同意,但我刚刚注册。我得到一个警告,我必须至少有“50个声誉”才能在原始帖子中添加评论。我的回答对你的问题有帮助吗?如果不是,考虑更多的细节来问一个新问题。
OPEN (UNIT = 1234 , FILE = 'PSR_FAB.txt', STATUS = 'OLD', &
ACTION = 'READ', POSITION = 'REWIND')