我正在为Fortran代码编写名单输入文件。我知道如果你有一维数组,你可以填充一系列元素,
&namelist
array(10) = 0, 1, 2, ......., n
&END
相当于
&namelist
array(10) = 0
array(11) = 1
array(12) = 2
...
array(10 + n) = n
&END
我现在需要写一个二维数组。我想做最短的等同于
&namelist
array2d(1,1) = 1
array2d(1,2) = 2
&END
我可以将其写为
&namelist
array2d(1) = 1, 2
&END
或者我需要将其写为
&namelist
array2d(1,1) = 1, 2
&END
答案 0 :(得分:6)
program nltest
implicit none
integer :: a(3,3)
namelist /mylist/ a
a = 0
open(7, file='nlinput.txt')
read(7, nml = mylist)
write(*,*) a
end program nltest
a=1,2,3,4,5,6,7,8,9
:这样可以正常工作并读取(1,1),a(2,1),......无论编译器如何都可以预期。a(2,:)=1,2,3
:这适用于ifort和gfortran 4.6.1,但是使用gfortran 4.3则没有。 为了做你想做的事,如果用最近的编译器编译代码,你应该能够编写array2d(1,:) = 1,2
。