格式不仅能描述数据,也能直接包含固定文本。多个数据使用相同布局时,可以重复单个编辑描述符,也可以重复由括号包围的整个格式组。
两种重复方式
3I5
2(1X,F6.2)
- 3I5中的3是重复次数,I是整数描述符,5是每个整数字段的宽度;它等价于连续写三个I5。
- 2(1X,F6.2)中的2重复括号内的整个格式组,每组包含一个空格和一个宽度为6、保留2位小数的实数字段。
- 资料中常用r表示重复次数、w表示字段宽度;它们是语法说明中的占位符,实际代码需要写成3、5等整数。
- 格式中的字符字面量直接成为输出内容,不会消耗输出列表中的数据。
本文代码
! 格式可以包含固定文本,并重复使用描述符或格式组。
program formatTextAndRepeatDemo
implicit none
integer :: firstValue
integer :: secondValue
integer :: thirdValue
real :: xCoordinate
real :: yCoordinate
firstValue = 3
secondValue = 12
thirdValue = 105
xCoordinate = 1.25
yCoordinate = -2.5
print "('values:',1X,3I5)", firstValue, secondValue, thirdValue
print "('point:',2(1X,F6.2))", xCoordinate, yCoordinate
end program formatTextAndRepeatDemo
编译运行
(base) hong@hongdeMacBook-Pro 037.formatTextAndRepeat % gfortran -Wall -Wextra -std=f2018 exampleFormatTextAndRepeat.f90
(base) hong@hongdeMacBook-Pro 037.formatTextAndRepeat % ./a.out
values: 3 12 105
point: 1.25 -2.50
现象分析
values:和point:来自格式中的固定文本。3I5依次处理3、12和105,每个整数都占5列;2(1X,F6.2)依次处理两个坐标,使它们具有相同的间隔、字段宽度和小数位数。
核心知识点
- 格式中的固定文本不会与输出列表中的表达式一一对应。
- 重复次数写在描述符前,例如3I5;数字3和5的作用不能混淆。
- 重复次数也可以作用于括号包围的格式组,例如2(1X,F6.2)。
- 重复格式适合结构相同的数据,能减少错误并突出输出布局。