2016-06-11 110 views
0

我目前正在运行一个代码,并且总是达到相同的目的。我试图读取输入文件并返回错误:Fortran运行时错误:读取输入数据时文件结束

Fortran runtime error: End of file

在其他职位,他们说放在iostat的符所以现在我的代码看起来是这样的:

INTEGER :: m 
INTEGER :: st 

Open(Unit = 13,action='read',file='Data_Inp.dat',status='old') 
read (13,*, iostat = st) m 
write (*,*) st 
write (*,*) m 

ALLOCATE(winkel(m),energie(m)) 

Do i = 1,m 
    read(13,*),winkel(i),energie(i) 
End Do 

而输入文件如下所示:

12 
-17.83 -0.019386527878 
-15.83 -0.020125057233 
-12.83 -0.020653853148 
-11.83 -0.020840036028 
-9.83 -0.020974157405 
-8.83 -0.021056401707 
-6.83 -0.021065517811 
-5.83 -0.020992571816 
-4.83 -0.020867828448 
-1.83 -0.02069158012 

现在,终端输出-1作为iostat,并为m打印一个不断变化的数字。

+0

还有哪些其他文章?通常,使用'iostat'不会奇迹般地防止错误,它只是允许您处理它,而不是让运行时终止。 – francescalus

+0

好吧,我明白了。但你能想象,为什么我会得到EOF错误。我在输入文件中找不到错误。错误必须在读命令处。 – songwriter93

+0

我不确定这是否只是您的示例文件不是真正的文件,但您的示例文件中只有10个数据条目,但您的代码会尝试读取12行,这可能会使您结束文件错误。 –

回答

0

如果第一个读取命令导致错误,请检查输入文件中“12”之前或之后的多余字符,特别是如果您在一个平台(Windows?)上创建它并在另一个平台(Linux? Mac?)

+0

你的答案看起来像一条评论。 –

相关问题