1

我正在尝试创建文件的完整路径,通过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 个字符)。

我如何摆脱虚假的空白?!

4

1 回答 1

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应自动分配以适应右侧的确切长度。

于 2013-02-26T16:18:48.507 回答