Чтение текстового файла с разделителями-запятыми построчно в Фортране - PullRequest
6 голосов
/ 25 июня 2011

Я новичок в Фортране. Я хотел бы иметь возможность читать текстовый файл и сохранять его содержимое в отдельных переменных. Я нашел очень полезное руководство по Фортрану (http://www.math.hawaii.edu/~hile/fortran/fort7.htm#read),) и пытаюсь следовать одному из перечисленных там примеров. В частности, я создал текстовый файл с именем data.txt со следующим текстом:

1.23, 4.56, 7.89
11, 13, "Sally"

Я сохранил этот текстовый файл в моем текущем каталоге. Затем я создал файл test.f90 (также сохранив его в моем текущем каталоге), содержащий следующий код:

PROGRAM test
  IMPLICIT NONE

  REAL :: x, y, z
  INTEGER :: m, n
  CHARACTER first*20

  OPEN(UNIT = 7, FILE = "data.txt")
  READ(7,*) x, y, z
  READ(7,*) m, n, first

  PRINT *, x
  PRINT *, y
  PRINT *, z
  PRINT *, m
  PRINT *, n
  PRINT *, first
END PROGRAM test

Я использую компилятор GNU Fortran, который, я думаю, включает в себя функции, по крайней мере, вплоть до Fortran95. Приведенный выше код, кажется, компилируется нормально, по крайней мере с настройками по умолчанию). Но когда я запускаю полученный исполняемый файл, я получаю следующее сообщение об ошибке:

At line 10 of file test.f90 (unit = 7, file = 'data.txt')
Fortran runtime error: End of file

Строка 10 - это строка READ (7, *) m, n, сначала . Можете ли вы помочь мне увидеть, что я делаю неправильно в приведенном выше коде?

Ответы [ 3 ]

3 голосов
/ 25 июня 2011

Я могу воспроизвести как ваше точное сообщение об ошибке, так и правильный вывод. Я использую gfortran в Windows и Блокнот для создания файла данных.
Если вы заканчиваете вторую строку данных символом конца строки (нажав клавишу Enter), программа покажет правильный вывод; если вы не прекратите его, во время выполнения будет отображаться ошибка.

Обычно среда выполнения пытается прочитать строку, но встречает символ конца файла до того, как достигнет конца строки.

3 голосов
/ 25 июня 2011

Когда я пробовал вашу программу-пример, он работал!Поздравляем!Вывод был:

   1.2300000    
   4.5599999    
   7.8899999    
          11
          13
 Sally 

Чтобы угадать возможную причину, по которой он не работает, иногда исполняемые файлы Фортрана могут быть чувствительны к окончанию строки, требуя правильного ограничителя строки для ОС, в том числе на последнейстрока файла данных.И наоборот, многие редакторы будут молча конвертировать окончания строк.Я обычно сталкиваюсь с этой проблемой с файлами, написанными программами Microsoft.

2 голосов
/ 26 июня 2011

Для некоторых компиляторов важно добавить новую строку после последней строки с данными. Например, gfortran - это компилятор, который нуждается в этом, и это вполне логично. Компилятору Sun (Oracle) это не нужно.

...