正宽度误差?

Fay*_*aye 2 fortran fortran90

我正在使用FORTRAN 90通过构建二进制表达式树来计算表达式.我已经为post_order_traversal创建了一个子例程,并希望格式化一个write语句来输出结果而不会前进到下一行.这是我到目前为止:

Print*, 'The Postfix Expression:' 

Write(101,*) tempPOinter%exp

101 Format (1x, A3, Advance='no') 

                                          1
Run Code Online (Sandbox Code Playgroud)

但是,当我尝试编译时,我收到一条错误,上面写着"格式说明符D在(1)处需要正宽度.如果有人知道这意味着什么或如何修复它,我将非常感谢您的帮助!谢谢.

chw*_*w21 7

首先,您已将格式行号放入单元位置.我想你想要的更像是

write(*, 101) tempPOinter%exp
Run Code Online (Sandbox Code Playgroud)

其次,advance=no参数需要放在write语句中,如下所示:

write(*, 101, advance="no") tempPOinter%exp
101 format(1X, A3)
Run Code Online (Sandbox Code Playgroud)

你也可以将所有内容放在一行:

write(*, '(1X, A3)', advance='no') tempPOinter%exp
Run Code Online (Sandbox Code Playgroud)

对于它的价值:当它试图解释你的格式声明时出现错误:

101 Format (1x, A3, Advance='no')
Run Code Online (Sandbox Code Playgroud)
  • 1X - 一个空间
  • A3 - 3个字母的字符串
  • A - 任意长度的字符串
  • d - 双精度浮点数 - 需要长度和多少位数!错误!