Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/fortran/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Fortran运行时错误:文件结束_Fortran_Gfortran - Fatal编程技术网

Fortran运行时错误:文件结束

Fortran运行时错误:文件结束,fortran,gfortran,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;打开 我得到以下错误:在Main.f95文件的第5行(unit=10,file='tes

我试图理解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;打开

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

我在网络上到处寻找解决方案,并建议添加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文件中读取整数列表。非常感谢您对我所犯错误的任何帮助。

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


有关详细信息,请参阅相关文章。

您的程序正在做正确的事情。简单地测试iostat可以防止程序崩溃。如果到达文件末尾,IOstatus将设置为负数(在本例中为-1)。如果出现读取错误,IOstatus将设置为正数,而在您的案例中没有发生读取错误。因此,print语句以-1结尾,这是正确的。

您使用的编译器版本是什么?我可以使用gfortran 5.4成功运行您的初始代码,正如您所看到的,
iostat
在这里为您所做的一切就是抑制一条非常清晰的错误消息,而是给您一个整数标志
-1
,指示某种读取错误。您确定您的文本文件实际上是一个文本文件吗?你使用什么编辑器?考虑这个评论一个关于最佳实践的侧记:总是使用<代码>隐式NO/<代码>。声明变量时,双冒号是可选的,但很常见(
integer::a、b、c
)。如果声明一个具有某种属性的变量/类型,则需要
整数,维度(:),可分配::a
)。在Finder上,文件类型显示为“纯文本”。此外,我还添加了“隐式无”,但仍然收到相同的错误消息。我的gfortran版本是6.3。谢谢你的评论。我的test.txt文件只是“1,2,3”。我现在在“3”的末尾添加了一个回车键。它仍然给我同样的错误。你用的是什么文本文件?也许是因为我的gfortran版本?我有6.3版。我使用了与您描述的相同的文本文件:
1,2,3
,在3的末尾有一个回车键。在保存文件时,您的文本编辑器可能正在执行一些奇怪的操作。用另一个编辑器试试,看看会发生什么。顺便说一句,你没有在文本文件中包含字符
,对吗?我现在正在用Word进行尝试。当我保存为纯文本(txt)时,它会给我一些选项:1.文本编码:Mac OS、MS-DOS或其他编码(包括大量选项).2.选项:插入换行符、允许字符替换、添加双向标记、使用:CR only、CR/LF、LFONLY或LF/CR结束行。您知道选择哪个选项吗?此外,我确实没有包括“字符”。您可以在终端中使用nano,它应该可以正常工作。