本帖最后由 xk6891 于 2024-7-19 17:00 编辑
[Fortran] 纯文本查看 复制代码 program main
implicit none
integer charnum
character,allocatable::smi(:)
!!character(len=30)::smi
character(len=1)sinelem
character(len=2)douelem
charnum=30
allocate(smi(charnum))
smi=''
sinelem="A"
douelem="BB"
write(smi(1:1),"(A1)")sinelem
write(*,*)smi
write(smi(2:3),"(A2)")douelem
write(*,*)smi
end
出现报错
[Fortran] 纯文本查看 复制代码 A
At line 16 of file test.f90
Fortran runtime error: End of record
Error termination. Backtrace:
单个字母是可以输入到内部文件的,多个字母就会出现这个错误。
看到有的帖子说是由于动态长度字符串的原因,因此把动态长度的字符串屏蔽掉,采用固定长度的字符串,是正常输出的
[Fortran] 纯文本查看 复制代码 program main
implicit none
integer charnum
!!character,allocatable::smi(:)
character(len=30)::smi
character(len=1)sinelem
character(len=2)douelem
charnum=30
!!allocate(smi(charnum))
smi=''
sinelem="A"
douelem="BB"
write(smi(1:1),"(A1)")sinelem
write(*,*)smi
write(smi(2:3),"(A2)")douelem
write(*,*)smi
end
输出如下
[Fortran] 纯文本查看 复制代码 A
ABB
问题出在哪里?
既然动态长度字符串的内部文件能够输入单个字母,应该不是动态长度与固定长度的问题吧?但也无更好解释
|