从.txt数据中读取数组

时间:2016-10-24 21:22:46

标签: arrays io fortran

我想从Fortran的.txt文件中读取一个数组。我用以下代码尝试了它:

PROGRAM test_performance
IMPLICIT NONE
DOUBLE PRECISION, DIMENSION(:), ALLOCATABLE :: ARRAYONE

    OPEN(UNIT=20,FILE='testfile.txt',STATUS='OLD', ACTION='READ')
    READ (20,*) ARRAYONE
    print *, 'here I am!'
    CLOSE(UNIT=20)
    write(*,*)ARRAYONE
    OPEN(UNIT=30,FILE='TEXTFILE.txt', STATUS='REPLACE', ACTION='WRITE')
    WRITE(30,*)ARRAYONE
END PROGRAM test_performance

编译时没有错误。关键是数组ARRAYONE以及文件TEXTFILE.txt是空的。

文件testfile.txt看起来像这样:

1 2 3 4 5 6 7 8 9 10 11

我面前有一本书,根据这本书应该有效。令我困惑的是,如果我只在输入文件中放入一个数字,即1,并且我想将其写在整数上,则没有问题,一切正常:o!

1 个答案:

答案 0 :(得分:1)

在对代表的追求中,以及这个问题得到答案的崇高意图

您不能在read语句中自动分配数组,规则禁止它(或者,如果您愿意,不要考虑它)。你可以:

  1. 将数组分配给您希望足够大的某个大小,使用不太可能在输入中找到的保护值填充它,然后将您拥有的数据读入第一个n元素;或
  2. 读取数据,计算出有多少元素,将数组分配给该大小,将数据传递给数组;你可以在输入文件的两次传递中做到这一点(一个用于确定内容,第二个用于读取它)或者你可以聪明地将数据读入一个大字符串并解析它以找出它有多少个数字包含(如此简单,它几乎不值得'解析'这个名字)。
  3. 还有其他方法,我相信你能想到一些。