0
我有這樣的Fortran代碼從外部文件中讀取數據的兩列:如何打開和讀取文件
PRINT*, ' Q1 Q2 '
DO 2 J = 1, NPTS
READ(20,*) Q1(J),Q2(J)
WRITE(*,98) Q1(J),Q2(J)
因此使用文件20,但它似乎不喜歡的任何名稱我在文件中使用,所以問題是,我應該如何命名文件?順便說一下,這是一個.txt
。
我有這樣的Fortran代碼從外部文件中讀取數據的兩列:如何打開和讀取文件
PRINT*, ' Q1 Q2 '
DO 2 J = 1, NPTS
READ(20,*) Q1(J),Q2(J)
WRITE(*,98) Q1(J),Q2(J)
因此使用文件20,但它似乎不喜歡的任何名稱我在文件中使用,所以問題是,我應該如何命名文件?順便說一下,這是一個.txt
。
你不是read
從文件,而是從units
。因此,如果您想按照您的示例從單元20
進行讀取,則需要先使用該單元打開文件。正如評論中所建議的,這通常是通過open
聲明完成的。對於一個名爲yourfile.txt
文件,程序會再讀取
OPEN(unit=20, file='yourfile.txt', status='old', &
action='read', iostat=stat)
if(stat /= 0) stop 'Could not open file'
PRINT*, ' Q1 Q2 '
DO 2 J = 1, NPTS
READ(20,*) Q1(J),Q2(J)
WRITE(*,98) Q1(J),Q2(J)
! ...
如果你不先打開一個文件,至少gfortran
和ifort
嘗試從一個名爲fort.<unit>
讀取文件,你的情況fort.20
。不過,我無法在標準中找到該行爲的參考。
不要忘記在閱讀後關閉文件,並儘量避免固定的單位數量。如果您的編譯器支持它,請在打開文件時使用說明符newunit=
。
open(unit = 20,file =「你想要什麼」)(放在循環2之前) –
你如何打開單元20?只要您正確打開文件,就可以調用該文件。 – casey