2013-02-15 70 views
1

下面是一個數據集,我有工作:讀取數據平鋪

2    19.000000E-01 4.246377E+24 9000.0  100.0 106.0 1400.0 
    2.601629E+4 1E+24   2.232456E+2 0.100000E+00 
    0.000000E+00 0.20000E+00 1.000000E+00 5.169046E+4 
    0.000000E+00 0.000000E+00 0.000000E+00 

我想讀該文本的數據集使用Gfortran從左到右的元素。但是,我的代碼從上到下閱讀它。另外,它沒有讀取所有的元素。有沒有什麼辦法可以讓我的GFortran代碼從左至右閱讀並閱讀所有的元素?

這裏是我的代碼:

PROGRAM S1 
    IMPLICIT NONE 

    REAL :: col1 
    REAL :: col2, col3 
    REAL :: col4, col5 
    REAL :: col6, col7 
    INTEGER :: IOstatus=0 



    open (unit = 1, file = "testing.txt", STATUS = "OLD") 
    readloop: DO 
    READ (1,*,IOSTAT=IOstatus) col1,col2,col3,col4,col5,col6,col7 
    IF (IOstatus /=0) EXIT 
    WRITE (*, *) col1,col2,col3,col4,col5,col6,col7 
    END DO readloop 
    END PROGRAM 

感謝。如果有任何其他信息可以給我,請告訴我。

回答

0

問題是Fortran逐行讀取記錄(逐行)。逐列閱讀不是很簡單。

當我運行這個,這是我的輸出獲得:

2.00000000  1.89999998  4.24637708E+24 9000.00000  100.000000  106.000000  1400.00000 
    26016.2891  1.00000001E+24 223.245605  0.100000001  0.00000000  0.200000003  1.00000000 

由於Fortran的逐行讀取行,它會嘗試讀取的第一行中的一切,那麼第二個,依此類推。在這種情況下,循環的第一次迭代從第一行讀取七個項目。第二次迭代從第二行讀取四個項目,然後從第三行讀取三個項目。第三次迭代嘗試讀取其餘的內容,但由於沒有其他項目可讀,因此READ失敗並退出循環。

閱讀欄目需要一些工作。第一步可能是讓你的列變量數組。您可能必須自己讀取記錄(行/行)並解析它們,或者逐個讀取項目並手動將它們分類到列中。

另外,看看這個帖子;它可能會提供一些幫助:Reading columns from data file in fortran