Fortran运行时错误:文件结束

时间:2017-09-15 22:19:09

标签: fortran gfortran

我试图了解READ语句在Fortran中是如何工作的。为此,我编写了以下简单程序:

program main 
integer a,b,c

open(unit=10,file='test.txt',status='old')
read(10,*)a,b,c
print*,a,b,c
close(10)
end program main

我在终端上运行(使用Mac):gfortran Main.f95;打开a.out

我收到以下错误:在Main.f95文件的第5行(unit = 10,file =' test.txt') Fortran运行时错误:文件结束

我已在网络上寻找解决方案,并提出在READ说明符中添加IOSTAT = ...的建议,如下所示:

program main 
integer a,b,c,IOstatus

open(unit=10,file='test.txt',status='old')
read(10,*,IOstat=IOstatus)a,b,c
print*,a,b,c,IOstatus
close(10)
end program main

当我这样做时,程序运行成功。但是,print命令显示" 2 0 1 -1",这是错误的,因为test.txt文件包含" 1,2,3"。

我试过在这里和那里调整一些东西,但没有好处。我试图做一些(我认为)应该非常简单的事情:从.txt文件中读取整数列表。任何关于我做错事的帮助都会非常感激。

2 个答案:

答案 0 :(得分:2)

我认为您的问题与text.txt文件有关,而不是与Fortran代码有关。尝试在其中添加行尾字符(输入)。我已经使用gfortran 5.4成功运行了原始代码。

有关详细信息,请参阅this相关帖子。

答案 1 :(得分:0)

您的程序正在做正确的事情。只需测试iostat即可防止程序崩溃。如果到达文件末尾,则IOstatus设置为负数(在这种情况下为-1)。如果发生读取错误,IOstatus设置为正数,这种情况在您的情况下没有发生。因此,您的打印语句以-1结尾,这是正确的。