Чтение целых чисел неизвестной ширины в Фортране
Я пытаюсь прочитать целые числа в этой строке:
# 14 14 10
в Фортране 2008.
Я попытался использовать этот код:
read(21, "(A, I,I,I)") garbage, a, b, c
но это не соответствует стандартам. Intel Fortran выдает предупреждение "Fortran 2008 does not allow this edit descriptor. [I]
"и другие вопросы объясняют эту проблему: в строке формата требуется неотрицательная ширина Ошибка: в строке формата в (1) требуется неотрицательная ширина
Как правильно прочитать целые числа неизвестной ширины с помощью Fortran 2008? Я не могу просто указать I2, потому что я не знаю ширину целого числа заранее.
1 ответ
Как я намекал в комментариях, вы можете легко читать подобные вещи с помощью списка ввода / вывода. Затем компилятор сам определяет, какие символы принадлежат каждому элементу в списке ввода, и анализирует их. Элементы могут быть разделены пробелами, запятыми или также новой строкой.
read(21,*) garbage, a, b, c
Это наиболее распространенный способ интерактивного чтения материалов, но он также полезен для анализа списков в файлах данных (CSV и аналогичных).
Если одно из чисел не присутствовало во входной записи (строка в текстовом файле), чтение продолжится на следующей записи.