2013-04-30 86 views
1

基本上我正在尋找從文件讀入長度爲n的數組中的X,Y對,其中n是文件中的行數(以及x和y對)。不幸的是,我所有的確定文件長度然後使用它來設置數組大小的嘗試都不成功。我如何在Fortran 77中完成此任務?希望我不會錯過某些明顯的東西,我更習慣於Python和Java,這是很平凡的。Fortran 77在運行時設置數組大小

PS。在問這個問題之前,我環顧四周,看起來總的感覺是,你只是把尺寸設置得大一點,然後你就會期望它變大,但是這看起來非常浪費和低效。

回答

2

解決方案是使用Fortran 90/95/2003/2008,它具有解決問題所需的功能,而FORTRAN 77則沒有。讀取文件一次以確定數據項的數量。倒回文件。分配所需長度的數組。再次讀取文件,讀入數組。

使用的Fortran 2003/2008(未測試):

use iso_fortran_env 

real :: xtmp, ytmp 
real, dimension (:), allocatable :: x, y 
integer :: i, n 
integer :: Read_Code 

open (unit=75, file=...) 

n = 0 
LengthLoop: do 

    read (75, *, iostat=Read_Code) xtmp, ytmp 

    if (Read_Code /= 0) then 
     if (Read_Code == iostat_end) then 
     exit LengthLoop 
     else 
     write (*, '(/ "read error: ", I0)') Read_Code 
     stop 
     end if 
    end if 

    n = n + 1 

end do LengthLoop 

allocate (x(n)) 
allocate (y(n)) 

rewind (75) 

do i=1, n 
    read (75, *) x(i), y(i) 
end do 

close (75)