Я хотел бы прочитать в некоторых текстовых строках из командной строки, используемой для запуска программы. Я использую внутреннюю подпрограмму GET_COMMAND_ARGUMENT
в программе, которая в основном является что-то вроде:Как получить аргументы командной строки неизвестной длины в Fortran?
program test
character(len=100) :: argument
call GET_COMMAND_ARGUMENT(1,argument)
print*, argument
end program test
Проблема здесь в том, что я чувствую, что это немного опасно, чтобы установить максимальную длину строки во время компиляции. Некоторые из аргументов обычно являются файлами со своим путем, поэтому они могут быть очень длинными. Решение с установкой длины статически до 1000 звучит как уродливое обходное решение.
Не существует ли более элегантный способ в Фортране для определения строки, способной содержать цепочку символов, длина которой известна только во время выполнения?
Ваш подход намного лучше, так или иначе я забыл этот аргумент. –
Возможно, также стоит отметить, что этот подход работает также и для 'get_environment_variable'. – francescalus
Спасибо, это очень помогает и действительно решает вопрос.У меня есть лишь незначительный вопрос: зачем нужен довольно запутанный 'allocate (character (some_length) :: argument) вместо более простого' allocate (argument (some_length)) ' – Onturenio