要读入程序的文件是.txt,称之为numbers.txt
,格式为
75694
13265
98654
我希望将每个数字读入一个rank-2数组(因此数组形状为[3 5])。我的方法的问题似乎是推进到新的记录,而我对隐含的DO没有很好的理解:
program f3
implicit none
integer, dimension(3,5) :: arr
integer :: i, j
open(unit=15,file="numbers.txt")
! Only attempting one method at a time, so one will be commented.
!----- Method 1 - how to advance to next record? -----
do i=1,3
do j=1,5
read(unit=15, fmt='(I1)', advance="no") arr(i,j)
enddo
enddo
!----- Method 2 - get "end of file" error -----
do i=1,3
read(unit=15, fmt='(I1)', advance="no") (arr(i,j), j=1,5)
enddo
close(15)
! Best way to display 2D array?
write(6,'(5I1)') ((arr(i,j), j=1,5), i=1,3)
end program f3
我希望能够使用do循环,暗示do循环或它们的组合只是为了更好地感受它们的操作,但是如果有一种“标准”方法来做到这一点我会喜欢知道。谢谢!
答案 0 :(得分:4)
尝试替换此
do i=1,3
do j=1,5
read(unit=15, fmt='(I1)', advance="no") arr(i,j)
enddo
enddo
用这个
do i=1,3
read(unit=15, fmt='(5I1)') arr(i,:)
enddo
这应该让你去。
写作:
do ix = 1,3
write(*,'(5(i1,1x))') arr(ix,:)
end do
是我可能采取的一种方法。