Fortran trim或adjustl在使用两次时不工作
我正在尝试对以下代码使用Fortran trim或adjustl在使用两次时不工作,fortran,trim,fortran90,Fortran,Trim,Fortran90,我正在尝试对以下代码使用trim/adjustl。似乎我得到了X_eq_10.0.dat或X_eq_10.0.dat作为输出文件的名称,我希望它是X_eq_10.0.dat(没有空格)。有什么补救办法吗 Program Test double precision:: X character (len=10) :: tag character (len=100) :: outfile X
trim
/adjustl
。似乎我得到了X_eq_10.0.dat
或X_eq_10.0.dat
作为输出文件的名称,我希望它是X_eq_10.0.dat
(没有空格)。有什么补救办法吗
Program Test
double precision:: X
character (len=10) :: tag
character (len=100) :: outfile
X=10.0
write(tag,'(f10.1)') X
print*,'tag=',tag
outfile='X_eq_'//trim(tag)//'.dat'
print*,'Output file: ',outfile
outfile='X_eq_'//trim(tag)//trim('.dat')
print*,'Output file: ',outfile
outfile='X_eq_'//adjustl(trim(tag))//adjustl(trim('.dat'))
print*,'Output file: ',outfile
End Program Test
我使用了gfortran
作为编译器。您想要的是:
outfile='X_eq'//trim(adjustl(tag))//'.dat'
adjustl
将字符向左移位,留下尾随空格,因此需要修剪该结果。做修剪(标记)
没有好处,因为它已经正确调整过了。最后,'.dat'
不需要任何处理
write(tag,'(f10.1)') X
我们说我们希望标签
的宽度为10,小数部分有一个数字。使用小数点前8位的一个小数符号:在(可选)符号之外将有空白填充
这就是为什么我们在outfile='X_eq'//trim(tag)//'.dat'
中看到大量空白
我们可以使用问题或其他答案中所述的adjustl
,或者在编辑描述符中使用0
来避免这种情况:
write(tag,'(F0.1)') X
F0.d
表单使字段宽度成为最小的适当字段,有:无前导空格
当标签
的长度为100时,仍然会有(大量)尾随空格,因此需要进行修剪
此外,甚至还有一些方法可以在不使用trim
的情况下使用tag