Fortran語言可以讀取數據,並將數據寫入到檔中。
在最後一章中,已經看到了如何讀取數據和寫入數據到終端。在本章中,將學習用Fortran語言提供檔的輸入和輸出功能。
可以讀取和寫入到一個或多個檔。OPEN, WRITE, READ 和 CLOSE語句可以實現這一目標。
打開和關閉檔
使用檔之前,必須打開該檔。 open命令用於打開檔進行讀取或寫入。命令的最簡單的形式是:
open (unit = number, file = "name").
然而,open 語句的一般形式:
open (list-of-specifiers)
下表介紹了最常用的修飾符:
修辭符 | 描述 |
---|---|
[UNIT=] u | 單元數u可以是任何數量範圍內9-99,它表明該檔,可以選擇任何號碼,但在程式中每一個打開的檔必須有一個唯一的數字 |
IOSTAT= ios | 它是在I/O狀態識別字和應為整數的變數。如果打開的語句是成功,則返回IOS值為零,否則為一個非零值。 |
ERR = err | 它是一個標籤到該控制跳以防有錯誤。 |
FILE = fname | 檔案名,一個字串。 |
STATUS = sta | 它示出了該檔的先前狀態。一個字串,可以有三個值NEW, OLD 或 SCRATCH。一個臨時檔被創建和刪除,當關閉或程式結束。 |
ACCESS = acc | 它是該檔的訪問模式。可以有兩個值SEQUENTIAL 或 DIRECT。默認值是SEQUENTIAL。 |
FORM= frm | 它給該檔的格式的狀態。可以有FORMATTED 或UNFORMATTED兩個值。默認值是UNFORMATTED |
RECL = rl | 它指定的每個記錄中的一個直接訪問檔的長度。 |
該檔已被打開後,它由read 和 write語句訪問。一旦完成,就應該使用close語句關閉。
close語句的語法如下:
close ([UNIT=]u[,IOSTAT=ios,ERR=err,STATUS=sta])
請注意,括弧中的參數是可選的。
示例
這個例子演示了寫一些數據到一個新的打開檔。
program outputdata implicit none real, dimension(100) :: x, y real, dimension(100) :: p, q integer :: i ! data do i=1,100 x(i) = i * 0.1 y(i) = sin(x(i)) * (1-cos(x(i)/3.0)) end do ! output data into a file open(1, file='data1.dat', status='new') do i=1,100 write(1,*) x(i), y(i) end do close(1) end program outputdata
當上述代碼被編譯和執行時,它創建檔data1.dat和x和y數組值寫入到其中。然後關閉該檔。
讀取和寫入檔
讀取和寫入的語句分別用於讀取和分別寫入到檔中。
它們有以下語法:
read ([UNIT=]u, [FMT=]fmt, IOSTAT=ios, ERR=err, END=s) write([UNIT=]u, [FMT=]fmt, IOSTAT=ios, ERR=err, END=s)
大部分的修飾符的已在上表中討論。
END= S說明是程式跳轉,當它到達檔結束,聲明標籤。
示例
這個例子演示了讀取和寫入到檔。
在這個程式中,從檔中讀取,在最後一個例子創建data1.dat,並在螢幕上顯示出來。
program outputdata implicit none real, dimension(100) :: x, y real, dimension(100) :: p, q integer :: i ! data do i=1,100 x(i) = i * 0.1 y(i) = sin(x(i)) * (1-cos(x(i)/3.0)) end do ! output data into a file open(1, file='data1.dat', status='new') do i=1,100 write(1,*) x(i), y(i) end do close(1) ! opening the file for reading open (2, file='data1.dat', status='old') do i=1,100 read(2,*) p(i), q(i) end do close(2) do i=1,100 write(*,*) p(i), q(i) end do end program outputdata
讓我們編譯和運行上面的程式,這將產生以下結果:
0.100000001 5.54589933E-05 0.200000003 4.41325130E-04 0.300000012 1.47636665E-03 0.400000006 3.45637114E-03 0.500000000 6.64328877E-03 0.600000024 1.12552457E-02 0.699999988 1.74576249E-02 0.800000012 2.53552198E-02 0.900000036 3.49861123E-02 1.00000000 4.63171229E-02 1.10000002 5.92407547E-02 1.20000005 7.35742599E-02 1.30000007 8.90605897E-02 1.39999998 0.105371222 1.50000000 0.122110792 1.60000002 0.138823599 1.70000005 0.155002072 1.80000007 0.170096487 1.89999998 0.183526158 2.00000000 0.194692180 2.10000014 0.202990443 2.20000005 0.207826138 2.29999995 0.208628103 2.40000010 0.204863414 2.50000000 0.196052119 2.60000014 0.181780845 2.70000005 0.161716297 2.79999995 0.135617107 2.90000010 0.103344671 3.00000000 6.48725405E-02 3.10000014 2.02930309E-02 3.20000005 -3.01767997E-02 3.29999995 -8.61928314E-02 3.40000010 -0.147283033 3.50000000 -0.212848678 3.60000014 -0.282169819 3.70000005 -0.354410470 3.79999995 -0.428629100 3.90000010 -0.503789663 4.00000000 -0.578774154 4.09999990 -0.652400017 4.20000029 -0.723436713 4.30000019 -0.790623367 4.40000010 -0.852691114 4.50000000 -0.908382416 4.59999990 -0.956472993 4.70000029 -0.995793998 4.80000019 -1.02525222 4.90000010 -1.04385209 5.00000000 -1.05071592 5.09999990 -1.04510069 5.20000029 -1.02641726 5.30000019 -0.994243503 5.40000010 -0.948338211 5.50000000 -0.888650239 5.59999990 -0.815326691 5.70000029 -0.728716135 5.80000019 -0.629372001 5.90000010 -0.518047631 6.00000000 -0.395693362 6.09999990 -0.263447165 6.20000029 -0.122622721 6.30000019 2.53026206E-02 6.40000010 0.178709000 6.50000000 0.335851669 6.59999990 0.494883657 6.70000029 0.653881252 6.80000019 0.810866773 6.90000010 0.963840425 7.00000000 1.11080539 7.09999990 1.24979746 7.20000029 1.37891412 7.30000019 1.49633956 7.40000010 1.60037732 7.50000000 1.68947268 7.59999990 1.76223695 7.70000029 1.81747139 7.80000019 1.85418403 7.90000010 1.87160957 8.00000000 1.86922085 8.10000038 1.84674001 8.19999981 1.80414569 8.30000019 1.74167395 8.40000057 1.65982044 8.50000000 1.55933595 8.60000038 1.44121361 8.69999981 1.30668485 8.80000019 1.15719533 8.90000057 0.994394958 9.00000000 0.820112705 9.10000038 0.636327863 9.19999981 0.445154816 9.30000019 0.248800844 9.40000057 4.95488606E-02 9.50000000 -0.150278628 9.60000038 -0.348357052 9.69999981 -0.542378068 9.80000019 -0.730095863 9.90000057 -0.909344316 10.0000000 -1.07807255
上一篇:
Fortran基本輸入輸出
下一篇:
Fortran過程