修剪目录路径的字符串

时间:2013-02-26 16:03:27

标签: fortran

我正在尝试创建文件的完整路径,通过Read语句输入父文件夹:

PROGRAM fileTest

  IMPLICIT NONE

  Character(LEN=20) :: dirpath,fullpath

  Write(6,*) 'Enter dir path'
  Read(*,'(a)') dirpath
  dirpath=TRIM(dirpath)
  fullpath=dirpath//'/file.abc'
  print*,fullpath

END PROGRAM fileTest

使用gfortran,代码编译,但输入/home/chris会导致最终的打印语句仍然给出

/home/chris         /file.abc

(注意空白的9个字符)。

如何摆脱虚假的空白?!

1 个答案:

答案 0 :(得分:3)

这是因为dirpath仍然是character(len=20)变量,所以在dirpath=TRIM(dirpath)之后再次用空格填充其内容。你必须像这样修剪:

fullpath = trim(dirpath)//'/file.abc'

修改
作为可分配字符串的演示(请参阅我的注释),如果您的编译器支持此功能,您应该能够更加令人满意地处理任意字符串长度:

character(:), allocatable  :: fullpath
character(len=some_length) :: buffer

write(6,*) 'Enter dir path'
read(*,'(a)') buffer
fullpath = trim(buffer) // '/file.abc'

应自动分配字符串fullpath以适应右侧的确切长度。