2016-03-03 121 views
0

freq.txtFortran運行時錯誤:文件結尾,格式的輸入

>FREQ //74 
4.163186002791e+04 3.578830331359e+04 3.076496349687e+04 2.644671278966e+04 2.273458304119e+04 
1.954349752908e+04 1.680032112209e+04 1.444218412726e+04 1.241504140604e+04 1.067243373686e+04 
9.174423035938e+03 7.886677033340e+03 6.779682426302e+03 5.828068476394e+03 5.010025548360e+03 
1.737988920100e+03 1.284332855871e+03 1.104060538508e+03 8.158747205330e+02 7.013564117662e+02 
6.029121922103e+02 5.182858606802e+02 4.455379022877e+02 2.433020871700e+02 2.091515701348e+02 
1.797945089525e+02 1.545580816278e+02 1.328639052196e+02 9.818329499070e+01 7.255514128762e+01 
5.361653963401e+01 4.609078195788e+01 3.962135930423e+01 3.406000172766e+01 2.927925083995e+01 
2.516953864546e+01 2.163667639887e+01 1.859969593339e+01 1.598899398582e+01 1.374473698894e+01 
1.181548977143e+01 1.015703673713e+01 8.731368506527e+00 7.505810795983e+00 6.452275569743e+00 
5.546617302183e+00 4.768079596776e+00 4.098819479081e+00 3.523498461194e+00 3.028931005477e+00 
2.603782330822e+00 2.238308635635e+00 1.924133783786e+00 1.654057335509e+00 1.421889523591e+00 
1.222309392724e+00 1.050742850800e+00 9.032578372386e-01 7.764742057598e-01 6.674862562538e-01 
5.737961402745e-01 4.932566139141e-01 3.133421372728e-01 2.315524554696e-01 1.990511474577e-01 
1.711118080085e-01 1.470941072881e-01 1.264475938317e-01 1.086990789815e-01 9.344179207682e-02 
8.032605785014e-02 6.905128236880e-02 5.935906385039e-02 5.102727046220e-02 

我的代碼

program lk 

implicit none 
integer :: i 
real,dimension(74) :: fr 

open(10,file='freq.txt') 
read(10,*) 

do i=1,74 
read(10,*)fr(i) 
end do 

end program 

t line 11 of file lk.f90 (unit = 10, file = 'freq.txt') 
Fortran runtime error: End of file 

有什麼問題,我應該如何設置正確的格式?

+0

@HighPerformanceMark是的,做工精細! –

+0

看看在讀取語句中使用iostat =。您可以使用它來讀取未知長度的文件。當你打到最後的iostat的變化,你可以使用一個邏輯運算符上,以退出您迴路(或使用而做的)。快速搜索可以找到許多示例。 –

回答

1

OK,回答放大在我先前的評論。

每個格式化read聲明,從文件中讀取開始在一行的開頭。或者,如果您願意,每個這樣的read語句都會在一行的結尾處結束。這裏代碼嘗試從少於74行的文件(運行時對象)中讀取74行。

一種解決方案是用現代的Fortran的一飲而盡讀取多個元素的能力。在一個簡單的例子中,例如在一個語句中讀取整個數組,read(10,*) fr就足夠了。該*格式表示表式輸入和各種現代化的編譯器(據我所知)將盡一切必要的驢工作獲得74張實數來填充fr出該文件。

相關問題