如何读取Fortran中内容未被空格分隔的2D文件

问题描述 投票:2回答:1

我有一个存储在文件(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完成所有这些操作。完成后,我需要通过它的转置来复用这个矩阵。

fortran gfortran fortran90
1个回答
1
投票

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

如果要从宽度为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
© www.soinside.com 2019 - 2024. All rights reserved.