2015-01-10 208 views
1

我正在弄溼Fortran,並且想將txt文件讀入數組。我覺得我已經嘗試了一切。 txt文件是逗號分隔的11行,每行有1個數字。Fortran 90讀取文件

這裏是我的代碼

program test 

real:: obs1,i,jj,count,x_1 
real,allocatable:: x(:) 

open(1,file='data1.txt',status='old',action='read') 
read(1,*) obs1 

allocate(x(obs1)) 

do i=1, obs1 
read(1,*) x_1 
x(i)=x_1 
end do 

do jj=1, obs1 
print*,x(jj) 
end do 

end program test 

這是我收到的錯誤:

The highest data type rank permitted is INTEGER(KIND=8) 
+0

我希望你有認真的理由使用Fortran。這是......糟糕的,史前的,等等。 – i486

+3

@ i486:爲什麼? Fortran仍然積極開發,數值計算非常優雅,編譯器通常比優化C等效率更高。 –

+0

它由相應的「粉絲俱樂部」開發。但我認爲Fortran中沒有任何東西可寫,並且與C中的相同(除了相同的Fortran「粉絲俱樂部」),它會更緊湊,可讀性更好等。 – i486

回答

1

本聲明

allocate(x(obs1)) 

包含一個錯誤,雖然我不知道它的與您報告的錯誤消息相匹配的那個。 obs1是一個real變量,但數組維數(和索引)必須是整數。的obs1聲明更改爲

integer :: obs1 

你的編譯器應該抱怨DO循環控制使用real變量太多,do i=1, obs1。再次使用一個整數。另外,由於您是Fortran新手,因此請在您的程序的每個範圍內學習使用implicit none。 SO會提供很多問題和解答來解釋它的含義以及它的重要性,以及您最喜歡的Fortran教程。