Fortran позволяет вам читать данные и записывать данные в файлы.
В последней главе вы увидели, как читать данные и записывать данные в терминал. В этой главе вы изучите функции ввода и вывода файлов, предоставляемые Fortran.
Вы можете читать и писать в один или несколько файлов. Операторы OPEN, WRITE, READ и CLOSE позволяют вам достичь этого.
Открытие и закрытие файлов
Перед использованием файла вы должны открыть файл. Команда open используется для открытия файлов для чтения или записи. Самая простая форма команды —
open (unit = number, file = "name").
Тем не менее, открытое заявление может иметь общую форму —
open (list-of-specifiers)
В следующей таблице описаны наиболее часто используемые спецификаторы.
Sr.No | Спецификатор и описание |
---|---|
1 |
[UNIT =] U Номер устройства u может быть любым числом в диапазоне 9-99, и это указывает на файл, вы можете выбрать любое число, но каждый открытый файл в программе должен иметь уникальный номер |
2 |
IOSTAT = IOS Это идентификатор состояния ввода / вывода и должен быть целочисленной переменной. Если оператор open успешен, то возвращаемое значение ios равно нулю, иначе ненулевое значение. |
3 |
ERR = ошибка Это метка, к которой переходит элемент управления в случае любой ошибки. |
4 |
ФАЙЛ = имя Имя файла, строка символов. |
5 |
STATUS = STA Показывает предыдущий статус файла. Символьная строка и может иметь одно из трех значений NEW, OLD или SCRATCH. Скретч-файл создается и удаляется при закрытии или завершении программы. |
6 |
ДОСТУП = акк Это режим доступа к файлу. Может иметь одно из двух значений, SEQUENTIAL или DIRECT. По умолчанию установлено значение SEQUENTIAL. |
7 |
ФОРМА = ФРМ Это дает статус форматирования файла. Может иметь одно из двух значений: FORMATTED или UNFORMATTED. По умолчанию установлено значение UNFORMATTED |
8 |
RECL = RL Он определяет длину каждой записи в файле прямого доступа. |
[UNIT =] U
Номер устройства u может быть любым числом в диапазоне 9-99, и это указывает на файл, вы можете выбрать любое число, но каждый открытый файл в программе должен иметь уникальный номер
IOSTAT = IOS
Это идентификатор состояния ввода / вывода и должен быть целочисленной переменной. Если оператор open успешен, то возвращаемое значение ios равно нулю, иначе ненулевое значение.
ERR = ошибка
Это метка, к которой переходит элемент управления в случае любой ошибки.
ФАЙЛ = имя
Имя файла, строка символов.
STATUS = STA
Показывает предыдущий статус файла. Символьная строка и может иметь одно из трех значений NEW, OLD или SCRATCH. Скретч-файл создается и удаляется при закрытии или завершении программы.
ДОСТУП = акк
Это режим доступа к файлу. Может иметь одно из двух значений, SEQUENTIAL или DIRECT. По умолчанию установлено значение SEQUENTIAL.
ФОРМА = ФРМ
Это дает статус форматирования файла. Может иметь одно из двух значений: FORMATTED или UNFORMATTED. По умолчанию установлено значение UNFORMATTED
RECL = RL
Он определяет длину каждой записи в файле прямого доступа.
После того, как файл был открыт, к нему обращаются операторы чтения и записи. После этого он должен быть закрыт с помощью оператора закрытия .
Оператор 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
Когда приведенный выше код компилируется и выполняется, он дает следующий результат —