如何在Fortran中的字符变量中编写换行符?

use*_*801 6 fortran runtime-error gfortran

我想在我的字符缓冲区变量中存储换行符buff.到目前为止我的代码是这样的:

       program TYPE_CHECK

c newline storage in buffer 
       character(100), dimension(10)  :: buff
       integer, dimension(10) :: x
       integer :: i

       do i=1,10
       x(i) = i
       enddo

       do j=1,10
       write(buff(j), 1) x(j), x(j)
 1     format(' This is line ', I3, /,
      *       ' This is newline ', I3)
       enddo

       do j=1,10
       write(*, "(A100)") buff(j)
       enddo

       end program TYPE_CHECK
Run Code Online (Sandbox Code Playgroud)

这会出现以下错误:

At line 13 of file myfoo6.F
Fortran runtime error: End of file
Run Code Online (Sandbox Code Playgroud)

Ian*_*anH 9

您可以使用NEW_LINE内部函数查询用于在格式化流输出中表示换行符的字符.将此字符发送到控制台时,通常会执行此操作.在格式规范中使用单独的字符数据描述符将其写出来可能最容易.

使用斜杠编辑描述符实际上是进入下一条记录的请求.对于内部文件(写入字符变量),这是下一个数组元素.在您的示例代码中,您将标量作为字符变量传递(因此只有一条记录),因此会发生文件结束条件.