考虑变量
character*100 xx
我想将它初始化为某个值,可能是一些可打印的字符或空格。我试过了
data xx /100*char(120)/
但那没用。 最低工作示例:
cat car_array.F
character*10 xx
data xx /10*char(120)/
write(*,*)xx
end
ifort car_array.F
car_array.F(2): error #6169: This construct is not valid in this context. [CHAR]
data xx /10*char(120)/
--------------------^
compilation aborted for car_array.F (code 1)
答案 0 :(得分:1)
大胆假设您并不需要符合f77标准, 你应该试试:
character*10 :: xx=repeat(char(120),10)
character*10 xx
integer i
do i=1,10
xx(i:i)=char(120)
end do
我看到使用重复计数data
语句在f77中初始化字符串的唯一方法是通过与长度为1的字符数组进行等效,这里你不能使用char
函数
equivalence(x,y)
character*10 x
character*1 y(10)
data y/10*'a'/
write(*,*)x
AAAAAAAAAA
答案 1 :(得分:0)
非常类似于agentp的帖子。 如果在编译时PARAMETER语句中使用它,则可以间接使用CHAR()函数。 旧时间,但这适用于openVMS Fortran。
PARAMETER CHAR_120 = CHAR(120)
CHARACTER*1 X(10) /10*CHAR_120/
CHARACTER*10 XX
EQUIVALENCE (X, XX)
TYPE *,XX