Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/fortran/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Fortran trim或adjustl在使用两次时不工作_Fortran_Trim_Fortran90 - Fatal编程技术网

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