Fortran語言,您可以讀取數(shù)據(jù),并將數(shù)據(jù)寫入到文件中。
在最后一章,你看到了如何讀取數(shù)據(jù),并將數(shù)據(jù)寫入到終端。在本章中,您將學(xué)習(xí)用Fortran語言提供的文件輸入和輸出功能。
可以讀取和寫入到一個或多個文件。開放,寫入,讀取和CLOSE語句,可以實現(xiàn)這一目標(biāo)。
使用文件之前,必須先打開該文件。 打開命令用來打開文件進行讀取或?qū)懭?。該命令的最簡單的形式是?
open (unit = number, file = "name").
然而,開放的聲明可能有一個一般形式:
open (list-of-specifiers)
下表介紹最常用的指示符:
說明 | 描述 |
---|---|
[UNIT =]ù | 單元號ü可以是任何數(shù)量范圍9-99,它表明該文件,你可以選擇任何號碼,但在程序中每個打開的文件必須有一個唯一的編號 |
IOSTAT = IOS | 它是在I / O狀態(tài)標(biāo)識符和應(yīng)為整數(shù)的變量。如果打開語句成功,則返回的IOS值為零其他非零值。 |
ERR = ERR | 這是任何錯誤的情況下,控制跳轉(zhuǎn)的標(biāo)簽。 |
FILE = FNAME | 文件名,一個字符串。 |
STATUS =站 | 它顯示了該文件的先前狀態(tài)。一個字符串,可以有三個值新的,舊的或SCRATCH之一。劃痕文件被創(chuàng)建和刪除關(guān)閉時或程序結(jié)束。 |
ACCESS = ACC | 它是該文件的訪問模式??梢杂袃蓚€值,順序或直銷。默認值是連續(xù)的。 |
FORM = FRM | 它給該文件的格式的狀態(tài)。可以有格式化或者非格式化兩個值。默認值為UNFORMATTED |
RECL = RL | 它指定每個記錄中直接訪問文件的長度。 |
該文件已被打開后,它是由讀寫語句訪問。一旦這樣做,就應(yīng)該使用CLOSE語句關(guān)閉。
close語句的語法如下:
close ([UNIT=]u[,IOSTAT=ios,ERR=err,STATUS=sta])
請注意,括號中的參數(shù)是可選的。
例
本實施例說明打開一個新文件的某些數(shù)據(jù)寫入到文件中。
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
當(dāng)上述代碼被編譯和執(zhí)行時,它創(chuàng)建的文件data1.dat和x和y數(shù)組值寫入到其中。然后關(guān)閉該文件。
讀取和寫入到文件
的讀寫語句分別用于讀和分別寫入到文件中。
他們的語法如下:
read ([UNIT=]u, [FMT=]fmt, IOSTAT=ios, ERR=err, END=s) write([UNIT=]u, [FMT=]fmt, IOSTAT=ios, ERR=err, END=s)
大多數(shù)符的已在上表中進行討論。
結(jié)束= S說明是一個語句標(biāo)號所在的程序跳轉(zhuǎn),當(dāng)它到達檔案結(jié)尾。
例
此示例演示讀取和寫入到文件中。
在這個項目中,我們從文件中讀取,我們在最后一個例子創(chuàng)建,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
當(dāng)上述代碼被編譯和執(zhí)行時,它產(chǎn)生了以下結(jié)果:
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
更多建議: