如果以下工作示例的输入是 - 例如 - “ach_40”,则输出是“ach_40.DOC?”和“ach_40.IMG”。哪儿是 ”?”从哪里来?
代码是:
program test
character*8 filin
character*12 dummy,file1,file2
character*4 :: img = '.IMG', doc='.DOC'
integer*4 ls1, ls2, i
write(*,*) ' File (without extension): '
read(*,'(a8)') filin
c first file
dummy=filin // doc
ls1 = len_trim(dummy)
ls2=0
do i = 1,ls1
if(dummy(i:i).ne.' ') then
ls2=ls2+1
file1(ls2:ls2) = dummy(i:i)
endif
enddo
c second file
dummy=filin // img
ls1 = len_trim(dummy)
ls2=0
do i = 1,ls1
if(dummy(i:i).ne.' ') then
ls2=ls2+1
file2(ls2:ls2) = dummy(i:i)
endif
enddo
write(*,*) file1
write(*,*) file2
stop
end
非常感谢您的提示!!
最佳答案
您从未设置整个 file1
和 file2
的值,因此您未明确设置的字符可以是任何内容。
一开始你可以将字符串初始化为
file1 = ''
file2 = ''
它们将充满您需要的空格。
但您可能只想:
file1 = trim(filin) // doc
file2 = trim(filin) // img
而不是所有复杂的代码。
关于fortran - FORTRAN 中的字符串操作 : strange behavior,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37797999/