我有一个返回字符串的函数。在Fortran中,需要定义输出s的长度,而不能定义输出s的长度(len=*) )。我不知道当我调用一个函数时,在函数中声明的字符串更短或更长时,可能会遇到什么问题。
Function real_to_str_new &
( &
r, fmt &
) &
Result (s)
Real, Intent(in) :: r
Character (len=*), Intent(in) :: fmt
Character (len=65) :: s发布于 2014-12-03 19:31:47
函数结果的存在并不是很重要,问题遵循赋值规则。
在(内部)赋值中,对于字符类型有variable = expr,规则7.2.1.3,10是:
对于变量类型为字符的内部赋值语句,expr可能具有不同的字符长度参数,在这种情况下,expr到变量长度的转换如下。 (1)如果变量的长度小于expr的长度,则从右截断expr的值,直到与变量的长度相同为止。 (2)如果变量的长度大于expr的长度,则用空格将expr的值扩展到与变量相同的长度。
在这种情况下,expr (作为函数结果)具有长度参数65,而variable将具有声明的length参数(除非allocatable起作用)。
https://stackoverflow.com/questions/27277484
复制相似问题