我认为 txt 文件中有一个数据集(数字)。它有 10 列和 80 个原始数据。
我打开、读取这些数据并将其存储在 Fortran 程序中的数组中。 然后我再次将数组中的数据写入另一个 txt 文件。然后数据显示为连续。 我需要在这个新的 txt 文件中再次将其显示为 10 列和 8 行。 我该怎么做?
例如:
program test
implicit none
integer::n
real,dimension(10,8)::data
open(unit=7,file='C:\USERS\SAM\DOCUMENTS\FORTRAN\DATA.TXT')
read (7,*) data
open(unit=8,file='C:\USERS\SAM\DOCUMENTS\FORTRAN\TESTDATA.TXT')
do n=1,80
write (8,*) data
end do
end program test
在
do
循环内,您正在写出整个数组。因此,您最终的输出将比您希望的长 80 倍。索引数组,以便一次只打印一行,如
do n=1,80
write(8,'(10(1x,e10.4))') data(n,:)
end do
使用
(n,:)
进行索引实际上是在说“第 n 行,所有列”。
如果数组已正确读入,那么应该可以工作,但我对 Fortran 不太熟悉,无法判断您的
read
语句是否会按预期工作。如果其他人可以对此发表评论,我们将不胜感激。
输出时严格不需要循环:每次格式重复时,它将开始一个新记录(即开始一个新行)。
根据我的口味,这里有太多的“幻数”,而且,虽然“行”/“列”确实可以反映 Fortran 中的存储顺序,但它们与您通常在数学中描述矩阵的方式不太相符.
但无论如何。
program test
implicit none
real, dimension(10,8) :: MyData
open( 7, file='C:\USERS\SAM\DOCUMENTS\FORTRAN\DATA.TXT' )
read( 7, * ) MyData
close( 7 )
open( 8, file='C:\USERS\SAM\DOCUMENTS\FORTRAN\TESTDATA.TXT' )
write( 8, "( 10( 1x, e11.4 ) )" ) MyData ! no loop needed
close( 8 )
end program test