2017-06-23 56 views
0

例如,我有一個寫命令來保存6個領域的數組中的文本文件是這樣的:如何讀取Fortran 77中文本文件中的最後一行數組,並將其保存在數組中?

OPEN(UNIT=26,FILE='W:\Partikeltemperaturfeld.txt', 
&FORM ='FORMATTED',STATUS='UNKNOWN', 
&ACTION='READWRITE') 
C 
WRITE (26,FMT='(6(F8.3,3X))') TFIELD(1,1:6) 
C 
REWIND(26) 

現在我想讀取和保存我的文本文件的最後一行的6個值有6個領域另一個數組喜歡:

IOS = 0 
DO WHILE (IOS.EQ.0) 
READ(UNIT=26,FMT='(6(F8.3,3X))',IOSTAT=IOS) TEST(1:6) 
END DO 

這可能是我在文件的最後一行的內容:

1377.445 1373.171 1363.639 1352.062 1341.476 1334.764 

目的是保存現有的最後一行格式。

但這樣做後,我總是得到值0.000000E+00。我怎樣才能讀取並保存我的'W:\ Partikeltemperaturfeld.txt'文件的最後一行?TEST(1:6)

+0

是的,你是對的。該行應該是READ(UNIT = 26,FMT ='(6(F8.3,3X))',IOSTAT = IOS)TEST(1:6)。但我總是得到0.000000E + 00的值。你如何將我的'W:\ Partikeltemperaturfeld.txt'的最後一行保存在數組中? –

+0

該文件如何看起來像?展示下。 –

回答

1

如果你

DO WHILE (IOS.EQ.0) 
    READ(UNIT=26,FMT='(6(F8.3,3X))',IOSTAT=IOS) TEST(1:6) 
END DO 

當有讀取輸入列表中數組的一些問題(文件或錯誤條件的結束)退出循環。正在讀取的變量的值是未定義的。你不能使用它。它可以包含任何東西

順便說一句你的代碼是不是符合Fortran 77(它是Fortran 90或更高版本),所以我不會試圖讓我的建議100%Fortran 77。你可以做

DO 
    READ(UNIT=26,FMT='(6(F8.3,3X))',IOSTAT=IOS) TMP 
    IF (IOS.EQ.0) THEN 
    TEST = TMP 
    ELSE 
    EXIT 
    END DO 
END DO 

其中TESTTMP是大小的數組6

相關問題