我想要一个程序,使输入字符a
(不假定长度)的本地副本b
成为可分配的字符数组。我有下面的代码在Fortran中复制字符串失败
program test_copystr
character(len=6) :: str
str = 'abc'
call copystr(str)
contains
subroutine copystr(a)
character(len=*), intent(in) :: a
!> Local variables
integer :: i
character, allocatable :: b(:)
allocate(b(len_trim(a)))
do i=1, len_trim(a)
b(i) = a(i:i)
end do
print *, b
b(1:len_trim(a)) = a(1:len_trim(a))
print *, b
end subroutine copystr
end program test_copystr
在那里我试图在两种不同的方式分配给a
b
。其结果是
ABC
AAA
我认为这两个任务应该产生相同的输出。任何人都可以解释我的区别? (要编译此代码,我使用gfortran 5.2.0编译器。)