我有一个简单的程序:
PROGRAM concatenate
CHARACTER::char*11,name*4
CHARACTER(20)::charname
char='hello there'
name='Fred'
WRITE(*,*) char
WRITE(*,*) name
charname = char // ', ' // name
WRITE(*,*) charname
END PROGRAM
Run Code Online (Sandbox Code Playgroud)
假设我不想提前指定变量charname的长度,因此其长度由char和name的长度自动确定.我可以在Fortran中这样做吗?
谢谢
是的,您可以这样声明charname
:
character(len=:), allocatable :: charname
Run Code Online (Sandbox Code Playgroud)
并且在charname
为其赋值时,编译器/运行时将负责制作正确的长度
charname = char//','//name
Run Code Online (Sandbox Code Playgroud)
您甚至可以使用其他语句自动重新分配它
charname = char//', Mr'//name
Run Code Online (Sandbox Code Playgroud)
这完全取决于您的编译器实现了Fortran 2003的这些功能,但是广泛使用的编译器的所有最新版本都具有.