我想以"简单"的方式使用延迟长度的字符串来读取用户输入.我想这样做的原因是我不想在知道用户输入的大小之前声明字符串的大小.我知道有"复杂"的方法来做到这一点.例如,可以使用iso_varying_string模块:https://www.fortran.com/iso_varying_string.f95 .此外,还有一个解决方案:未定义长度的Fortran字符输入.但是,我希望得到的东西简单,或几乎一样简单,如下所示:
program main
character(len = :), allocatable :: my_string
read(*, '(a)') my_string
write(*,'(a)') my_string
print *, allocated(my_string), len(my_string)
end program
Run Code Online (Sandbox Code Playgroud)
当我运行这个程序时,输出是:
./a.out
here is the user input
F 32765
Run Code Online (Sandbox Code Playgroud)
请注意,没有输出write(*,'(a)') my_string.为什么?
此外,my_string尚未分配.为什么?
为什么这不是Fortran的简单功能?其他语言有这个简单的功能吗?我一般对这个问题缺乏一些基本的了解吗?
fortran ×1