1

我正在使用 fortran 77。我有多个(比如 N 个)数据文件,每个文件都包含相同大小(比如 S)的数据。我想将一个大小 (N*S) 的单个数组中的所有这些数据文件读入我的程序中。数据文件以排列的方式命名(datafile1.dat、datafile2.dat......datafileN.dat)。

任何线索我该怎么做?

谢谢!

4

1 回答 1

1

使用 Fortran 95 表示法可能的解决方案可能如下所示:

program test
  implicit none

  integer, parameter :: NN = 2
  integer, parameter :: SS = 3
  character(len=128) :: fname
  integer :: data(NN * SS)
  integer :: ii

  do ii = 1, NN
    write(fname, "(A,I0,A)") "datafile", ii, ".dat"
    open(12, file=fname, form="formatted")
    read(12, *) data((ii-1)*SS+1:ii*SS)
    close(12)
  end do
  print *, data

end program test

如果需要,您可以轻松地将其重写为 Fortran 77 表示法,尽管大多数编译器已经理解 Fortran 90/95:

      program test
      implicit none

      integer NN, SS
      parameter(NN = 2, SS = 3)
      character*128 fname
      integer data(NN * SS)
      integer ii, jj

      do ii = 1, NN
        write(fname, "(A,I0,A)") "datafile", ii, ".dat"
        open(12, file=fname, form="formatted")
        do jj = 1, SS
          read(12, *) data((ii-1)*SS+jj)
        end do
        close(12)
      end do
      print *, data

      end program test
于 2013-02-15T08:56:15.090 回答