我有一个简单的Fortran函数,它将逗号分隔的字符串转换为字符数组(len = 255)。我无法弄清楚如何创建一个可以接收此函数输出的变量。
这是我的逗号分隔字符串到数组函数:
function CommaDelimitedStringToArray(commastr) result (slist)
character(*), intent(in) :: commastr
! Local vars
character(255), dimension (:), allocatable :: slist
integer :: scount
! Lots of code removed - I set scount to be the number
! of elements in the comma delimited string, with a
! minimum value of 1
! Create the slist and populate it...
allocate (slist(scount))
! Lots more code removed. At the end of this function I know I have
! slist defined with the correct size and correct contents
end function CommaDelimitedStringToArray
现在我想实际使用这个功能。我试过这个:
character(255) :: commastr
character(255), dimension (:), allocatable :: mylist
commastr = "this,that,theother,etc"
mylist = CommaDelimitedStringToArray(trim(commastr))
但是mylist
没有从函数调用中接收到数组。
在我的测试中,如果我在调用函数之前将mylist分配给正确的大小,它会正确接收数组。但是,显然,在现实世界中,我在调用函数之前并不知道它的大小。
如何声明/使用mylist以便正确接收数组?
编辑 - 我的编译器在Win 10上运行时报告为“适用于Microsoft Visual Studio 2015的版本16.0.0062.14的Fortran Windows集成的英特尔®ParallelStudio XE 2016 Update 3编译器版”。
编译器标志是:
/ nologo / debug:full / Od / warn:interfaces / module:“Debug \”/ object:“Debug \”/Fd"Debug\vc140.pdb“/ traceback / check:bounds / check:stack / libs :static / threads / dbglibs / c