我有一个返回字符串的函数。在Fortran有
要求必须定义输出s的长度而不能定义
是(len=*)
。我不确定打电话时可能会遇到什么问题
一个函数和字符串比在。中声明的大小更短或更长
功能。
Function real_to_str_new &
( &
r, fmt &
) &
Result (s)
Real, Intent(in) :: r
Character (len=*), Intent(in) :: fmt
Character (len=65) :: s
答案 0 :(得分:3)
有一个函数结果不是很重要,问题遵循赋值规则。
在(内在)分配中,如果您有variable = expr
字符类型,则7.2.1.3, 10规则为:
对于变量类型为字符的内部赋值语句,expr可能具有不同的字符长度参数,在这种情况下,expr到变量长度的转换如下所示。
(1)如果变量的长度小于expr的长度,则expr的值从右边截断,直到它与变量的长度相同。
(2)如果变量的长度大于expr的长度,则使用空格将expr的值扩展到右边,直到它与变量的长度相同。
在这种情况下,expr
(作为函数结果)具有长度参数65,variable
将具有声明的长度参数(除非allocatable
发挥作用)。