Fortran:在主程序中初始化长度未知的字符串

时间:2015-09-09 15:43:38

标签: string initialization fortran character

我有一个字符串我想用子程序调用中的intent(out)数据进行初始化。我看起来像那样:

character(*) :: path
call get_path(path)

编译器告诉我:

  

错误:假定字符长度为(1)的实体必须是虚拟实体   参数或PARAMETER

该构造在子例程中工作正常,但在主程序中失败。是否可以在不知道其长度的情况下初始化路径变量?

编辑:东西我已经尝试但失败了。

character(99) :: path_temp
character(:), allocatable :: path
call get_path(path_temp)
allocate(path(len(trim(path_temp))))
  

错误:(1)

处可分配标量的形状规范

我不明白为什么编译器认为路径是标量。

返回假定长度的字符的函数显然是非法的。

character(*) function get_path ()
    get_path         =     '/path/to/folder/'
end function get_path
  

错误:(1)处的字符值模块过程'get_path'不得假定为长度

什么有效,但让我头疼,因为我发现非常糟糕的风格是给路径一个疯狂的长度,并在每次使用时修剪它。我认为我的编译器在使用可分配的字符串时遇到问题,因为它不是最新的(mpif90)。不确定它是否支持它们。

0 个答案:

没有答案