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中的字符串操作:奇怪的行为_Fortran_Gfortran - Fatal编程技术网

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

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)

如果以下工作示例的输入为,例如“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
而不是所有那些复杂的代码。

记住a)Fortran中的固定长度字符串总是具有相同的固定长度;b)如果你不定义变量,它的值是未定义的,用你的示例输入来运行程序的逻辑,并考虑“在代码<文件FIL<<代码>中的最后几个字符的值应该是什么?”