不换行打印值

Print values without new line

如何在不换行的情况下打印多个值?

PRINT *, "foo:", foo, ", bar:", bar, ", baz:", baz

显然,这可以通过 WRITE (here and there) 实现。如何在打印多个值时使用 PRINT 及其不同的语法实现相同的效果?

write 语句提供了可选的 advance 说明符,但 print 没有。

多个 write 语句 advance="no" 可以在代码的不同位置进行,以便将多个项目打印到同一行。举个例子,在 do 循环中使用它:

do i=1,3
    write(*, fmt="(1x,a,i0)", advance="no") "loop #", i
end do
write(*,*) ! Assumes default "advance='yes'".
write(*,*) "--OK, the loop is done!"

! Example output:
 loop #1 loop #2 loop #3
 --OK, the loop is done!

请注意,advance 不能用于列表定向输出(使用“*”到 "print anything")。因此,我展示了一个示例格式说明符 fmt="(1x,a,i0)",它将为每个写入语句打印一个空白 space、一个字符串和一个整数。语言参考 and/or 您的编译器文档会派上用场。例如,参见 here

正如其他人所建议的那样,如果这是所需的行为,最好使用 write。如果出于某种原因您仍然喜欢使用 print,那么您可能应该 assemble 在打印之前将您的输出项放入单个变量或变量列表中。