Я пытаюсь перебрать все аргументы, переданные в программу на Фортране, с различным количеством аргументов.Таким образом, я сделал массив строк размещаемым.
Однако, как только я запускаю указанный цикл, я получаю segfault, если задан какой-либо аргумент.
Есть ли проблемы с наличием размещаемого массива строк?
CODE:
program read_args
implicit none
character(len=999), allocatable :: args(:)
integer, allocatable :: i, nargs
nargs=command_argument_count()
if ( nargs == 0 ) then
print*, 'err: no arguments or options'
stop
end if
allocate(args(1:nargs))
print*, nargs, size(args(:))
do i=1,nargs
call getarg(i,args(i))
args(i)=trim(adjustl(args(i)))
end do
end program
Количество аргументов и размер массива печатаются, как только я пытаюсь прочитать аргумент, я получаю ошибку segfault.
Compiler,gfortran - gcc , v8.3.0
on debian 10
(Чтобы избежать XY-проблем: идея состоит в том, чтобы проверить флаги опций в списке аргументов, а также получить все имена файлов, которые должны быть обработаны)
Результаты:
$ ./a.out
err: no arguments or options
$ ./a.out arg1 arg2
2 2
<Segfault>