[英]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.