我有一个代码,在这里我设置了一个字符数组,其中有一组默认的"选项";,我可能希望也可能不希望在代码执行期间覆盖它。如果我用所有相同长度的字符串初始化数组(更短或等于最大可能长度5(,那么代码就可以工作:
PROGRAM test
character(len=5) :: s(3)=["a","b","c"]
s(1)="12345678"
print *,s
END PROGRAM test
输出
12345b c
但是如果字符串是可变长度的。
character(len=5) :: s(3)=["a","bb","c"]
然后我得到一个编译错误:
Error: Different CHARACTER lengths (1/2) in array constructor at (1)
我可以通过填充空格来让所有字符串都相等,就像这个一样
character(len=5) :: s(3)=["a ","bb","c "]
但对于我的实际例子来说,这有点乏味,因为我有一些很长的字符串,所以在大声计数时需要按下空格键。。。有没有一种方法可以初始化具有可变长度变量的字符数组,即某种自动填充?
您需要在数组构造函数中手动指定类型规范,如
character(len=5) :: s(3) = [character(len=5) :: "a", "bb", "c"]
这将把数组中的每个元素转换为相同的类型character(len=5)
,这样数组构造函数是合法的。