不换行打印值
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 在打印之前将您的输出项放入单个变量或变量列表中。
如何在不换行的情况下打印多个值?
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 在打印之前将您的输出项放入单个变量或变量列表中。