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されますが、最終的なprintステートメントに結果を入力しても次のようになります。

/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 に答える