如何读取Fortran 77中文本文件中的最后一个数组行并将其保存在数组中?

时间:2017-06-23 22:36:42

标签: fortran fortran77

例如,我有一个写命令来保存一个包含6个字段的数组,如下所示:

 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)中的文件?

1 个答案:

答案 0 :(得分:1)

如果你这样做

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

当在输入列表中读取数组时出现问题(文件结束或错误条件)时,循环将退出。正在读取的变量的值是未定义的。你不能使用它。它可以包含任何

BTW你的代码是 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的数组