打印值而不换行

Cod*_*ope 4 fortran fortran90

如何打印许多没有换行符的值?

PRINT *, "foo:", foo, ", bar:", bar, ", baz:", baz
Run Code Online (Sandbox Code Playgroud)

显然,这是可能的WRITE在这里那里)。PRINT在打印多个值时如何实现相同的语法以及不同的语法?

Mat*_*t P 7

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!"
Run Code Online (Sandbox Code Playgroud)

! Example output:
 loop #1 loop #2 loop #3
 --OK, the loop is done!
Run Code Online (Sandbox Code Playgroud)

请注意,advance它不能与列表定向输出一起使用(使用“ *”来“打印任何内容”)。因此,我展示了一个示例格式说明符fmt="(1x,a,i0)",它将为每个write语句打印一个空格,一个字符串和一个整数。语言参考和/或您的编译器文档非常有用。例如,请参见此处

正如其他人所建议的那样,如果这是理想的行为,则最好使用write。如果由于某些原因您仍然喜欢使用print,那么您可能应该在输出之前将输出项目组合成单个变量或变量列表。