格式:在字符输出中添加尾随空格以左对齐

Dan*_*ton 6 fortran string-formatting fortran90

如何将字符串格式化为具有恒定宽度左对齐?有Aw格式化程序,其中w表示所需的字符输出宽度,但它会在 if 前面添加空格w > len(characters),而不是附加它们。

当我尝试时

44 format(A15)
   print 44, 'Hi Stack Overflow'
Run Code Online (Sandbox Code Playgroud)

我明白了

>        Hi Stack Overflow<
Run Code Online (Sandbox Code Playgroud)

代替

>Hi Stack Overflow        <
Run Code Online (Sandbox Code Playgroud)

有没有简单的 Fortran 格式化解决方案可以解决这个问题?

fra*_*lus 5

正如问题中所指出的,问题是当长度短于输出字段宽度的字符表达式时,填充空格出现在字符表达式我们想要的是在我们想要的字符串后面添加填充空格。

没有简单的格式化从自然编辑描述符的意义上来说,但是,我们可以做的是输出一个具有足够尾随空格(计入长度)的表达式。

例如:

print '(A50)', 'Hello'//REPEAT(' ',50)
Run Code Online (Sandbox Code Playgroud)

或者

character(50) :: hello='Hello'
print '(A50)', hello
Run Code Online (Sandbox Code Playgroud)

甚至

print '(A50)', [character(50) :: 'hello']
Run Code Online (Sandbox Code Playgroud)

也就是说,在每种情况下,输出项的长度(至少)为 50。每个字符都将在右侧填充空格。

如果您选择,您甚至可以创建一个返回扩展(左对齐)表达式的函数:

print '(A50)', right_pad('Hello')
Run Code Online (Sandbox Code Playgroud)

该函数留作读者练习。