Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/file/3.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
File 在gfortran中使用名称列表时出错_File_Input_Fortran_Gfortran - Fatal编程技术网

File 在gfortran中使用名称列表时出错

File 在gfortran中使用名称列表时出错,file,input,fortran,gfortran,File,Input,Fortran,Gfortran,我试图从测试文件中读取某些值,但gfortran一直给我一个文件结束错误,我不知道为什么。以下是Fortran代码: program mesh implicit real*8(a-h,o-z) namelist /input/ x open(5,file='input.in') read(5,input) print*, x end program mesh 这是我的输入文件: &input x=5/ 我尝试了

我试图从测试文件中读取某些值,但gfortran一直给我一个文件结束错误,我不知道为什么。以下是Fortran代码:

    program mesh 
    implicit real*8(a-h,o-z)

    namelist /input/ x

    open(5,file='input.in')
    read(5,input)
    print*, x
    end program mesh 
这是我的输入文件:

 &input 
   x=5/

我尝试了使用
&end
而不是
/
的多个输入文件,并将所有内容都放在同一行(带空格)

将“/”移动到新行后,它应该可以工作。EOL字符对gfortran版本4.6.3没有任何影响

&input 
x=5
/

虽然您已经得到了正确的答案,但确定格式的最简单方法是编写一个程序来创建一个名称列表文件,然后查看它的语法是否正确

这是您的程序修改后的版本[我添加了第二个名字列表]:

    program mesh
    implicit real*8(a-h,o-z)

    namelist /input/ x,y
    namelist /input2/ a,c

    x = 4
    y = 7

    a = 37
    b = 23

    open(5,file='input.in')
    write(5,input)
    write(5,input2)
    end program mesh
生成的文件是:

&INPUT
 X=  4.0000000000000000     ,
 Y=  7.0000000000000000     ,
 /
&INPUT2
 A=  37.000000000000000     ,
 C=  0.0000000000000000     ,
 /

我在“&end”上应用了代码片段标记,但我怀疑您的意思可能是“
&
在末尾”。你能检查一下吗?如果我没记错的话,这里也有类似的关于线端的问题。您确定该文件的行分隔符适用于您的操作系统吗?我无法在Linux上使用
gfortran 4.8.4
重现您的错误。你能告诉我们你的
gfortran
版本和操作系统吗?我开始认为它可能与我的操作系统有关。我甚至尝试了不同的编译器(f77),但它仍然存在相同的问题。你说我的操作系统的行分隔符是什么意思?可移植性问题使我在十年前放弃了所有使用
namelist
。这似乎起到了作用。我仍然不知道为什么仅仅使用正确的格式是行不通的,但至少我现在有了一个工作文件。@JXS832您的编译器可能有一个bug。我将文件缩减为一个
&输入X=4.0000000000000000,Y=7.0000000000000000/
,这样就可以了[我使用的是5.3.1]。即使
&输入X=4,Y=7/
也能工作。