Чтение целых чисел неизвестной ширины в Фортране

Я пытаюсь прочитать целые числа в этой строке:

# 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 и аналогичных).

Если одно из чисел не присутствовало во входной записи (строка в текстовом файле), чтение продолжится на следующей записи.

Другие вопросы по тегам