fortran fortran中文资料网
手气不错
Article

055.stringConcatenation_字符串拼接

2026年9月30日基础级

//是Fortran的字符连接运算符,结果依次包含左右两个字符表达式的全部字符。定长变量的尾部空格也会被原样连接,因此trim经常与//配合使用。它常用于生成文件路径、标签和诊断信息;适合把多个已知字段组合成新文本,连接定长字段前应先决定尾部空格是否有意义。

语法结构

combined = left // right
clean = trim(left) // trim(right)
  • left//right的结果长度等于两个操作数长度之和,不会自动删除任何空格。
  • trim(text)只去除text尾部的空格,不删除开头或中间的空格。
  • 连接结果赋给另一个定长变量后,仍会按目标长度补空格或截断。

本文代码

! 拼接结果目录和文件名,并处理定长字符尾部空格。
program stringConcatenationDemo
  implicit none

  character(len=12) :: directory, fileName
  character(len=24) :: rawPath, cleanPath

  directory = "results/"
  fileName = "case01.dat"

  rawPath = directory // fileName
  cleanPath = trim(directory) // trim(fileName)

  write (*, "(A,A,A)") "直接拼接:|", rawPath, "|"
  write (*, "(A,A,A)") "去空格后:|", trim(cleanPath), "|"
end program stringConcatenationDemo

编译运行

(base) hong@hongdeMacBook-Pro 055.stringConcatenation % gfortran -Wall -Wextra -std=f2018 exampleStringConcatenation.f90 -o stringConcatenationDemo
(base) hong@hongdeMacBook-Pro 055.stringConcatenation % ./stringConcatenationDemo
直接拼接:|results/    case01.dat  |
去空格后:|results/case01.dat|

现象分析

directory声明为12个字符,而results/只占8个字符,所以变量末尾含4个空格;fileName声明为12个字符,case01.dat后也有2个空格。直接使用//时,这些空格全部进入rawPath。

trim(directory)先把目录尾部4个空格移除,再与trim(fileName)连接,于是目录分隔符和文件名紧邻得到results/case01.dat。

cleanPath本身仍是长度24的定长变量,赋值后右端会补空格;输出时再次trim,是为了不把目标变量的新尾部空格显示出来。

核心知识点

  • //连接完整字符值,包括定长变量的尾部空格。
  • trim只处理尾部空格,多作用于连接文件路径和标签。
  • 连接表达式的长度与目标变量长度是两个概念,最终赋值仍遵循补空格和截断规则。

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注