FORTRAN中的字符串操作:奇怪的行为
如果以下工作示例的输入为,例如“ach_40”,则输出为“ach_40.DOC?”和“ach_40.IMG”。“?”从哪里来 代码是:FORTRAN中的字符串操作:奇怪的行为,fortran,gfortran,Fortran,Gfortran,如果以下工作示例的输入为,例如“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)
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
而不是所有那些复杂的代码。记住a)Fortran中的固定长度字符串总是具有相同的固定长度;b)如果你不定义变量,它的值是未定义的,用你的示例输入来运行程序的逻辑,并考虑“在代码<文件FIL<<代码>中的最后几个字符的值应该是什么?”