簡體   English   中英

在Fortran中多次從文件讀取同一行

[英]Reading the same line from a file many times in Fortran

我想在Fortran中多次讀取文件的同一行。 有關數據是真實值。 我試圖構建此代碼作為測試,但是我總是把它弄錯。

program advance

    implicit none
    integer , parameter :: ut = 20
    character(len=7) :: fname = 'dat.dat'
    integer :: n, idx 
    character(len=100) :: lnumber 
    open(unit = ut, file =fname, status='old', action='read')

    n = 10 

    do idx = 1, n 
        read(ut, '(a)', advance = 'no') lnumber 
        print *, lnumber 
    end do 

end program advance

dat.dat文件包含一行25.325654515464564564

該代碼返回以下錯誤。

At line 13 of file advance.f90 (unit = 20, file = 'dat.dat')
Fortran runtime error: End of record

如何解決此錯誤?

這種非高級輸入(使用advance='no' )並不意味着文件位置根本沒有高級。 這意味着文件位置不會超出滿足輸入列表要求所需的位置。

因此,在這種情況下,通過將單個“實數”讀入字符變量lnumber來提高文件位置。 下一讀將從此后繼續。 稍后這點恰好是文件的末尾。

隨着越來越多的一般推進輸入,文件位置是先進的,即使在整體不要求記錄的下一個記錄的開始。


正如High Performance Mark 所說 ,一遍又一遍地閱讀同一行不是您應該做的。 您可以將該行讀入一個字符變量(例如在此處完成),然后將該變量重復用作內部文件 但是,如果您真的想再次讀取一行,請考慮backspace

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM