如何在Fortran中读取内容不以空格分隔的2D文件

时间:2019-04-02 19:07:38

标签: fortran gfortran fortran90

我在文件(number.txt)中存储了一个矩阵,如下所示:

12323456  
54254311  
76534522  

我如何在Fortran中读取此类矩阵,所以结果将是:

1 2 3 2 3 4 5 6  
5 4 2 5 4 3 1 1  
7 6 5 3 4 5 2 2  

使用awk分隔这些列并在Fortran中读取它非常容易。但是,我想知道是否可以仅使用Fortran来完成所有这些工作。完成后,我需要将该矩阵的转置倍数。

1 个答案:

答案 0 :(得分:1)

Fortran格式的输入和输出基于字段。字段不需要用空格分隔。在这里,您可以将数据12323456视为宽度为8的单个字段或宽度为1的8个字段(或其他组合)。

如果要从宽度为1的整数字段中读取值,则格式项I1将允许读取该值。如果您有八个宽度为1的整数字段彼此相邻,8I1将允许读取这些字段。

implicit none
character(8) :: input(3)=['12323456','54254311','76534522']
integer i, values(8)

do i=1,3
  read(input(i),'(8I1)') values
  print '(8(I1,:,1X))', values
end do

end