2011-08-18 429 views

回答

3

正如你在談論線和退格,可能你的意思是access =「sequential」和form =「formatted」。

在這種情況下,爲了跳過記錄,您可以只進行空白讀取,例如,

read(unitnum, *) 
3

您還可以使用直接訪問文件,在該文件中可以按順序寫入和讀取記錄。見,例如,編輯後一天http://en.wikipedia.org/wiki/Fortran_95_language_features#Direct-access_files

解決方案使用順序文件已經提出。我不認爲這些會起作用......請解釋一下,如果你知道如何使它工作。 (當然,您可以對內存中的值進行排序,然後依次寫出它們。)下面是一些示例代碼來說明問題。它創造的10行的文件,那麼假設你想寫第五值:

program test_rewind 

    integer :: i, j 


    open (unit=15, file="test_rewind.txt", access="sequential", form="formatted", action="readwrite") 

    do i=1,10 
     write (15, '(I4)') i 
    end do 

    rewind (15) 

    do i=1,4 
     read (15, *) j 
    end do 

    write (15, '(I4)') 99 

    stop 

end program test_rewind 

輸出文件包含:

1 
    2 
    3 
    4 
    99 

的順序文件的問題是,一個寫現有文件會在該點後刪除所有內容。

比較來直接訪問解決方案:

program test_rewind 

    integer :: i 

    open (unit=15, file="test_rewind.dat", access="direct", form="unformatted", action="readwrite", recl=4) 

    do i=1,10 
     write (15, rec=i) i 
    end do 

    write (15, rec=5) 99 

    stop 

end program test_rewind 

短,它的工作原理 - 輸出文件中包含10個數字與5日從5變更爲99。然而,它們是二進制。

1

對於每個數據輸入,使用janneb描述的方法來達到所需的行。然後使用REWIND語句返回到文件的開頭(僅限access ='sequential')。

另外如果您需要它,請查看格式描述符以瞭解如何沿着一條線移動左/右。