FORTRAN中的字符串操作:奇怪的行为

时间:2016-06-13 19:48:01

标签: 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): '
   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 

非常感谢您的提示!

1 个答案:

答案 0 :(得分:3)

您永远不会设置整个file1file2的值,因此您未明确设置为某些内容的字符可以是任何内容。

在开始时,您可以将字符串初始化为

file1 = ''
file2 = ''

它们将充满您需要的空间。

但你可能只想:

file1 = trim(filin) // doc
file2 = trim(filin) // img
而不是所有复杂的代码。