文件中提供以下数据:
1 7 5 4 11 0 1 -13 -7
我想从这些列中形成一个3x3矩阵。我已经尝试过,advance=no但是收到运行时错误。
program form_matrix
implicit none
integer:: col,A(9)
open(unit=12,file='q10.txt')
do col=1,9
read(12,*,advance='no')(A(col))
end do
7 format(3i4)
write(*,7)(A(col),col=1,9)
close(12)
end program
Run Code Online (Sandbox Code Playgroud)
嗯,有几件事:
要读入变量,您需要指定该变量而不是包含该变量的语句。A(col)代替(A(col))。
然后,您不允许使用*带有说明符的列表定向格式()advance,您需要一种格式(这在您的情况下会很困难,因为列的宽度不同)。
将整行读入数组可能会更容易,无需循环并使用列表定向格式:
program form_matrix
implicit none
integer:: col,A(9)
open(unit=12,file='q10.txt')
read(12,*) A
7 format(3i4)
write(*,7)(A(col),col=1,9)
close(12)
end program
Run Code Online (Sandbox Code Playgroud)
*启用列表定向格式,其中各个值由逗号或空格分隔。类型由语句的 RHS 确定。因此,您读取了一个包含九个(因为A有九个元素长)整数的列表(因为A是整数)。有关这方面的更多详细信息,我建议使用Fortran 2008 Standard , Cl。10.10“列表定向格式化”