2017-09-15 80 views
1

我想了解READ语句如何在Fortran中工作。要做到这一点,我写了下面的程序: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(单位= 10,文件= '的test.txt') Fortran运行时错误的第5行:文件结束

我已经寻找各地的网络解决方案,并在添加IOSTAT = ...的READ符内的建议来了,如下:

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 

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

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

+0

你使用什么编译器版本?正如你所看到的,我可以用gfortran 5.4 –

+0

成功运行你的初始代码,在这里你所有的'iostat'都可以抑制什么是一个非常明确的错误消息,而是给你一个指示某种读取错误的整数标志'-1'。 – agentp

+0

你确定你的文本文件实际上是一个文本文件?你用什么编辑器? – agentp

回答

2

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

查看this相关帖子了解更多详情。

+0

感谢您的评论。我的test.txt文件只是“1,2,3”。我现在在“3”的末尾添加了一个输入。它仍然给我同样的错误。你使用了什么文本文件? 也许这是由于我的gfortran版本?我有版本6.3。 –

+0

我使用了与您所描述的相同的文本文件:'1,2,3'在3的末尾输入。在保存文件时,文本编辑器可能会做些奇怪的事情。用另一个编辑器试试看看会发生什么。 –

+0

顺便说一下,你在文本文件中没有包括字符'''对吗? –