Mi piacerebbe leggere alcune stringhe di testo dalla riga di comando utilizzata per eseguire un programma. Sto utilizzando la subroutine interna GET_COMMAND_ARGUMENT
in un programma che, in fondo è qualcosa di simile:Come ottenere argomenti da riga di comando di lunghezza sconosciuta in Fortran?
program test
character(len=100) :: argument
call GET_COMMAND_ARGUMENT(1,argument)
print*, argument
end program test
Il problema qui è che sento che è un po 'pericoloso per impostare la lunghezza massima della stringa in fase di compilazione. Alcuni degli argomenti sono in genere file con il loro percorso, quindi potrebbero essere molto lunghi. Una soluzione che comporta l'impostazione statica della lunghezza a 1000 suona come una brutta soluzione.
Non esiste un modo più elegante in Fortran per definire una stringa in grado di contenere una catena di caratteri la cui lunghezza è nota solo in fase di esecuzione?
Il tuo approccio è molto migliore, in qualche modo ho dimenticato questo argomento. –
Forse vale la pena notare che questo approccio funziona anche per 'get_environment_variable'. – francescalus
Grazie, questo è di grande aiuto e in effetti risolve la domanda.Ho solo una piccola domanda, perché è necessario il piuttosto contorto 'allocate (character (some_length) :: argument)' invece del più semplice 'allocate (argument (some_length))' – Onturenio