打印没有换行的值

时间:2017-08-31 15:05:06

标签: fortran fortran90

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

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

显然,WRITEherethere)可以实现这一点。如何在打印多个值时使用PRINT及其不同语法实现相同的效果?

1 个答案:

答案 0 :(得分:5)

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

可以在代码中的不同位置创建writeadvance="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不能与列表导向输出一起使用(使用“*”来“打印任何东西”)。因此,我展示了一个示例格式说明符fmt="(1x,a,i0)",它将为每个write语句打印一个空格,一个字符串和一个整数。语言参考和/或编译器文档派上用场。例如,请参阅here

正如其他人所说,如果这是理想的行为,最好使用write。如果由于某种原因你仍然喜欢使用print,那么你应该在打印之前将输出项组装成单个变量或变量列表。