2015-05-12 83 views
0

我有這樣的Fortran代碼從外部文件中讀取數據的兩列:如何打開和讀取文件

PRINT*, ' Q1    Q2 ' 
    DO 2 J = 1, NPTS 
    READ(20,*) Q1(J),Q2(J) 

    WRITE(*,98) Q1(J),Q2(J) 

因此使用文件20,但它似乎不喜歡的任何名稱我在文件中使用,所以問題是,我應該如何命名文件?順便說一下,這是一個.txt

+3

open(unit = 20,file =「你想要什麼」)(放在循環2之前) –

+2

你如何打開單元20?只要您正確打開文件,就可以調用該文件。 – casey

回答

3

你不是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) 
    ! ... 

如果你不先打開一個文件,至少gfortranifort嘗試從一個名爲fort.<unit>讀取文件,你的情況fort.20。不過,我無法在標準中找到該行爲的參考。

不要忘記在閱讀後關閉文件,並儘量避免固定的單位數量。如果您的編譯器支持它,請在打開文件時使用說明符newunit=