11

我正在用 fortran 编写一些简单的输出,但我想要空格分隔符。但是,如果使用以下语句:

format(A20,ES18.8,A12,ES18.8)

我得到这样的输出:

p001t0000               3.49141273E+01obsgp_oden      1.00000000E+00

我更喜欢这个:

p001t0000           3.49141273E+01   obsgp_oden  1.00000000E+00

我尝试对宽度使用负值(如在 Python 中)但没有骰子。那么,有没有办法让数字左对齐?

提前谢谢了!

4

4 回答 4

8

没有特别漂亮的方法。但是,使用内部 WRITE 语句将数字转换为文本字符串(以前使​​用 ENCODE 语句完成),然后操作文本可能会满足您的需要。

引用http://rsusu1.rnd.runnet.ru/develop/fortran/prof77/node168.html

内部文件 WRITE 通常用于通过使用合适的格式规范将数值转换为字符串,例如:

  CHARACTER*8 CVAL 
  RVALUE = 98.6 
  WRITE(CVAL, '(SP, F7.2)') RVALUE

WRITE 语句将用字符“+98.60”填充字符变量 CVAL(请注意,数字的每一端都有一个空格,第一个是因为数字在 7 个字符的字段中右对齐,第二个是因为记录被填充到声明的 8 个字符的长度)。

一旦一个数字被转换成一个字符串,它可以在第 7 节中描述的各种方式进一步处理。这使得例如,在一个字段中写数字左对齐成为可能,......

于 2010-12-28T23:49:14.120 回答
7

Fortran 95 更容易做到这一点,但仍然不是微不足道的。使用 write 语句将数字或其他项目写入字符串(如第一个答案所示)。然后使用 Fortran 95 固有的“ADJUSTL”左调整字符串的非空白字符。

于 2010-12-29T05:29:32.223 回答
2

真正不优雅的是我的方法(我像洞穴女人一样编程),在编写了简单的 Fortran 写入格式(不是 LJ)之后,我使用 Excel(csv)和 ultraedit 的组合来有效地删除空格以获得所需LJ 后跟逗号(我需要将其用于将特定的导入格式导入到另一个软件)。高炉

于 2014-03-12T16:05:37.770 回答
1

如果您真正想要的是输出字段之间的空格而不是左对齐的数字来留下空格,您可以简单地使用X编辑描述符。例如

format(A20,4X,ES18.8,4X,A12,4X,ES18.8)

将在每个字段和下一个字段之间插入 4 个空格。请注意,标准需要1X一个空格,当前的一些编译器也接受非标准X

于 2013-11-12T11:21:38.483 回答