РЕДАКТИРОВАТЬ Первый абзац этого ответа может показаться довольно странным, поскольку ОП изменил вопрос.
Ваше использование термина string
изначально смутило меня, и я подозреваю, что он, возможно, вас тоже смутил. Неправильно думать о каких-либо символах в файле или вводить в командной строке в виде строки, но когда все эти символы являются цифрами (вкраплены пробелами), более полезно думать о них как integers
. Система времени исполнения Fortran будет позаботиться о переводе строки цифр в целое число.
В этом свете я думаю, что ваш вопрос может быть лучше выражен как Как читать список целых чисел из строки ввода? Вот один из способов:
Определить массив. Здесь я определить массив фиксированного размера:
integer, dimension(10**4) :: dump
(я часто использую такие выражения, как 10**4
, чтобы избежать необходимости рассчитывать 0
с тщательно). Этот шаг, определяющий массив для захвата всех значений, кажется тем, который вам не хватает.
Чтобы прочитать эти значения из терминала, во время выполнения, вы можете написать
write(*,*) 'Enter ', 10**4, 'numbers now'
read(*,*) dump
и это установит dump(1)
на первый номер вы набираете, dump(2)
к второму, вплоть до 10**4
-м. Излишне говорить, что набирать это число номеров на терминале не рекомендуется, и лучше использовать их для чтения из файла. Который берет вас к вашему
read(21,*) dump
Это не удивило бы меня найти, что система накладывает некоторые ограничения на длину одной линии, так что вы могли бы быть более сложным при попытке прочитать столько, сколько 10**4
целые числа, такие как чтение их в строках по 100 за раз, что-то вроде этого. Это легко
read(*,*) dump(1:100)
будет читать 100 целых чисел в первые 100 элементов массива. Напишите цикл для чтения 100 строк по 100 целых чисел.
Я отредактировал вопрос! –