用Fortran代码将输出写在文本文件上

时间:2019-04-29 14:12:48

标签: fortran output

我在Fortran中有一个矩阵A(3,4),我想将其写在这样的文本文件中:

 A(1,1) A(2,1) A(3,1)
 A(1,2) A(2,2) A(3,2)
 A(1,3) A(2,3) A(3,3)
 A(1,4) A(2,4) A(3,4)

我使用以下代码。首先有两个问题,每个i都会覆盖它,并成行写入。我很乐意指导我解决问题。谢谢

      do i=1,4
      open (unit=10,file="out.txt",action="write")
      write (10,*)  A(1,i) , A(2,i) , A(3,i) 
      close (10)

1 个答案:

答案 0 :(得分:0)

正如Ian所提到的,因为i的open语句在循环内,所以每个i都会覆盖您的文件。 Fortran正在重新打开每个i的文件。将open语句移至循环之前,因此仅打开一次。

当然,它是按行写入的,因为2-D数组中的第一个索引是行索引。您可以根据需要切换索引。另一方面,根据您的第一个框,它看起来好像您希望各行都跨列。

您说您只需要编写一些元素。只要它们在连续的块中,您将要在write语句中使用implied do loop。它更加简洁,您无需编写很多变量就可以编写大块代码。看起来像这样:

open (unit=10,file="out.txt",action="write")
do i=1,4
   write (10,*)  (A(j,i), j=1,3)
end do
close (10)

同样,这将反转行和列,如果要使用传统表示形式,请切换i和j。