2011-04-18 52 views
3

在Fortran 95上,我收到一條錯誤消息,指出itemarray(size)不能是意圖(out),因爲您正在從文件中讀取itemarray,所以這沒有任何意義。我該如何解決這個錯誤?從數組中讀取問題

在這個子程序中,我基本上試圖從文件中讀取數據並將其存儲在數組中。

下面是我提到的子程序的代碼。任何幫助表示讚賞。謝謝你的時間。

SUBROUTINE readItems(size,itemarray,priarray,quarray) 

INTEGER:: iost=0, i=0 
INTEGER, INTENT(OUT):: quarray(50) 
INTEGER, INTENT(OUT):: size 
REAL, INTENT(OUT):: priarray(50) 
CHARACTER(20),INTENT(OUT)::itemarray(50) 
CHARACTER(20)::namefiletoread 

PRINT*,"Enter the name of file you would like to read: " 
READ*,namefiletoread 

OPEN(UNIT=77,FILE = namefiletoread, ACTION = "READ", STATUS="REWIND",IOSTAT=iost) 
IF(iost>0)STOP "Problem opening the file!" 

DO i=1, size 
READ(77,'(A,F6.2,I8)',IOSTAT=iost), itemarray(i), priarray(i),quarray(i) 
IF(iost<0)STOP 
END DO 


END SUBROUTINE 
+1

你使用哪種編譯器(使用哪個選項),以及你得到的確切錯誤信息是什麼?用'gfortran -c -std = f95'編譯只給了我一個警告:「在(1)的OPEN語句中的狀態說明符的值爲'REWIND'」,這是正確的,因爲你應該使用說明符POSITION ='REWIND' 。 – eriktous 2011-04-18 11:17:48

+0

我正在使用g95。我用狀態=「倒帶」 – EuropaDust 2011-04-18 12:05:35

+0

我認爲你可能是對的。而不是status =「rewind」,它應該是position =「rewind」。 – EuropaDust 2011-04-18 12:34:05

回答

3

問題可能出在變量「size」。它被聲明爲intent(out),顯然它不是來自調用函數,並且在開始迭代它之前似乎沒有被分配到任何地方。