例如,我有一个写命令来保存一个包含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)
中的文件?
答案 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
其中TEST
和TMP
是大小为6的数组