fortran - FORTRAN 中的字符串操作 : strange behavior

标签 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 

非常感谢您的提示!!

最佳答案

您从未设置整个 file1file2 的值,因此您未明确设置的字符可以是任何内容。

一开始你可以将字符串初始化为

file1 = ''
file2 = ''

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


但您可能只想:

file1 = trim(filin) // doc
file2 = trim(filin) // img

而不是所有复杂的代码。

关于fortran - FORTRAN 中的字符串操作 : strange behavior,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37797999/

相关文章:

compilation - Fortran 编译执行中不需要的回溯信息

c - Fortran 到 C,修剪对分配给字符串的空间的影响

C++ 与 Fortran 并行 MM 速度差异循环平铺

fortran - Fortran 90 中有更好的 double 赋值吗?

fortran - 错误: Missing comma in a FORMAT statement

segmentation-fault - Gfortran : Segmentation fault with long character

visual-studio-2008 - CMake Fortran 和 Visual Studio

fortran - 停止变量中的代码?

fortran - 数组构造函数中的不同字符长度(3/4),如何修剪字符串 - fortran

fortran - 直接链接 fortran 代码中的库,无需编译器标志