2016-03-02 50 views
0

我想讀取測試文件的某些值,但gfortran總是給我一個文件錯誤的結束,我不知道爲什麼。下面是Fortran代碼:錯誤使用gfortran名單

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代替/且在同一直線上(含空格)一切多個輸入文件。

+0

我的「與最終應用的代碼片段降價「,但我懷疑你的意思可能是」'&'在最後「。你能檢查一下嗎? – francescalus

+0

如果我沒有記錯,這裏有關於線路端點的類似問題。你確定該文件的行分隔符對你的操作系統是否正確? – francescalus

+0

我無法在Linux上用'gfortran 4.8.4'重現你的錯誤。你能告訴我們你的'gfortran'版本和操作系統嗎? – chw21

回答

0

將「/」移動到新行後,它應該可以正常工作。該EOL字符沒有與gfortran版本4.6.3

&input 
x=5 
/
0

任何影響。雖然你已經得到了正確的答案,以確定其格式最簡單的方法就是寫一個程序來創建一個文件名稱列表然後查看它的正確語法。

這裏是你的程序修改爲做到這一點[我已經添加了第二個名稱列表]:

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  , 
/
+0

這似乎有伎倆。我仍然不知道爲什麼簡單地使用正確的格式將不起作用,但至少我現在已經得到了一個工作文件。 – JXS832

+0

@ JXS832您的編譯器可能有錯誤。我把這個文件分割成一個'&INPUT X = 4.0000000000000000,Y = 7.0000000000000000 /',這個工作[我正在使用5.3.1]。即使'&INPUT X = 4,Y = 7 /'也能工作。 –