打印时如何在 Fortran 中换行?

Pro*_*emy 4 fortran gfortran

这是非常简单的查询,但我无法找到确切的解决方案。在 Fortran 中打印时如何换行?

例如

print*,'This is first line'
print*,'This is second line'
Run Code Online (Sandbox Code Playgroud)

我想要以下输出

This is first line

This is Second line
Run Code Online (Sandbox Code Playgroud)

即在两行之间添加空格。

在我们使用的 java 中\n,在 html 中使用可以<br>完成这项工作..但是如何在 Fortran 中实现相同的目标?

fra*_*lus 8

有多种方法可以管理您想要的内容。我们可以打印空白记录或显式添加换行符。

内部函数返回换行符NEW_LINE

print '(2A)', 'First line', NEW_LINE('a')
print '(A)', 'Second line'
Run Code Online (Sandbox Code Playgroud)

NEW_LINE('a')可能会产生类似ACHAR(10)或 的效果CHAR(10,KIND('a'))

可以通过没有输出项来打印空白记录:

print '(A)', 'First line'
print '(A)'
print '(A)', 'Second line'
Run Code Online (Sandbox Code Playgroud)

或者我们可以使用斜杠编辑

print '(A,/)', 'First line'
print '(A)', 'Second line'
Run Code Online (Sandbox Code Playgroud)

如果我们不使用多个打印语句,我们甚至可以使用这些相同的想法来组合写作。例如:

print '(A,:/)', 'First line', 'Second line'
print '(*(A))', 'First line', NEW_LINE('a'), NEW_LINE('a'), 'Second line'
Run Code Online (Sandbox Code Playgroud)

NEW_LINE('a')也可以在格式字符串中使用,但这似乎除了斜杠编辑之外没有增加太多价值。


eve*_*ets 5

有几种方法可以打印两行输出。

program foo
   print *, 'This is the first line'
   print *, 'This is the second line'
end program
Run Code Online (Sandbox Code Playgroud)

是实现您想要的一种方式。另一个是做

program foo
   write(*,'(A,/,A)') 'This is the first line', 'This is the second line'
end program foo
Run Code Online (Sandbox Code Playgroud)

而且,还有一种方式

program foo
   write(*,'(A)') 'A' // achar(13) // achar(10) // 'B'
end program foo
Run Code Online (Sandbox Code Playgroud)

对于某些编译器,您可以使用选项

program foo
   write(*,'(A)') 'A\r\nB'
end program foo
Run Code Online (Sandbox Code Playgroud)

使用以下选项编译会产生:

$ gfortran -o z -fbackslash a.f90 && ./z
  A
  B
Run Code Online (Sandbox Code Playgroud)

  • 当然,只需在 print 语句之间添加 `print *` 即可。顺便说一句,你的问题没有说得太清楚。:( (3认同)