Ich möchte einige Textzeichenfolgen von der Befehlszeile lesen, die zum Ausführen eines Programms verwendet wird. Ich bin das interne Unterprogramm mit GET_COMMAND_ARGUMENT
in einem Programm, das im Grunde so etwas wie ist:Wie erhalten Sie Befehlszeilenargumente unbekannter Länge in Fortran?
program test
character(len=100) :: argument
call GET_COMMAND_ARGUMENT(1,argument)
print*, argument
end program test
Das Problem hier ist, dass ich glaube, es ist ein bisschen gefährlich, die maximale Länge der Zeichenfolge bei der Kompilierung zu setzen. Einige der Argumente sind normalerweise Dateien mit ihrem Pfad, daher können sie sehr lang sein. Eine Lösung, bei der die Länge statisch auf 1000 festgelegt wird, klingt wie ein hässlicher Workaround.
Gibt es in Fortran nicht eine elegantere Möglichkeit, eine Zeichenfolge zu definieren, die eine Kette von Zeichen enthalten kann, deren Länge nur zur Laufzeit bekannt ist?
Ihr Ansatz ist viel besser, irgendwie habe ich dieses Argument vergessen. –
Vielleicht ist es auch erwähnenswert, dass dieser Ansatz auch für 'get_environment_variable' funktioniert. – francescalus
Danke, das ist eine große Hilfe und löst tatsächlich die Frage.Ich habe nur eine kleine Frage, warum ist es notwendig, die ziemlich gewundene 'allocate (character (some_length) :: Argument)' anstelle der einfacheren 'allocate (Argument (some_length))' – Onturenio