Fortran中批量同格式独立变量写入文件时自定义换行实现方法
解决方案
完全可以实现你要的效果,核心是利用Fortran格式语句的格式组重复和换行控制符/,同时复用你定义的基础格式标号,无需重复书写(f10.3,1x)。
正确实现方式
首先保留你已定义的基础格式:
10 FORMAT(f10.3, 1x) ! 单个变量的格式,带后续空格
然后定义一个总格式标号,把重复次数、换行规则和基础格式组合起来:
20 FORMAT(2(10), /, 3(10), /, 6(10), /, 2(10))
2(10):重复调用标号10的格式2次(对应a1、a2)/:强制换行3(10):重复调用标号10的格式3次(对应a3、a4、a5)- 以此类推,根据你的换行需求调整重复次数和
/的位置
最后执行写入:
WRITE(output_unit, 20) a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13
关键说明
- 你之前尝试的
WRITE(output_unit,2(10),'/',3(10),...)写法错误,因为Fortran的WRITE语句格式参数只能是单个格式标号或格式字符串,不能拆分多个参数。所有格式规则必须整合到同一个标号或字符串中。 - 如果不想单独定义两个格式标号,也可以把基础格式直接嵌入总格式字符串(但复用性差一些):
WRITE(output_unit,'(2(f10.3,1x), /, 3(f10.3,1x), /, 6(f10.3,1x), /, 2(f10.3,1x))') & a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13 - 若要避免最后一行末尾出现多余空格,可调整最后一组格式去掉
1x:20 FORMAT(2(10), /, 3(10), /, 6(10), /, 2(f10.3))
适配灵活换行需求
这种方法完全支持换行位置不固定:只需修改总格式标号中的重复次数和/的位置即可,无需修改变量列表或基础格式,所有独立变量直接按顺序传入即可。
内容的提问来源于stack exchange,提问作者Saurabh
相关产品推荐
相关产品推荐

