我正在使用 fortran 77。我有多个(比如 N 个)数据文件,每个文件都包含相同大小(比如 S)的数据。我想将一个大小 (N*S) 的单个数组中的所有这些数据文件读入我的程序中。数据文件以排列的方式命名(datafile1.dat、datafile2.dat......datafileN.dat)。
任何线索我该怎么做?
谢谢!
使用 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