Fortran 用于阵列打印的格式描述符

Fortran 用于阵列打印的格式描述符,fortran,Fortran,我试图在Fortran(95)中打印一个维度为(n,m)的整数数组。当我使用以下技术格式化输出时,它是有效的: write(*,”(nIw)”数组 不知何故,它会自动地将每一行移到下一行,对每一行使用相同的格式描述符。(?) 但在这种情况下,为什么它不起作用 write(*,100)数组 100格式('nIw') 这两种方法有什么不同?您的格式100编写不正确:您试图打印字符串“nIw”,而不是数字。看看这个例子: program print_integer implicit n

我试图在Fortran(95)中打印一个维度为
(n,m)
的整数数组。当我使用以下技术格式化输出时,它是有效的:

write(*,”(nIw)”数组
不知何故,它会自动地将每一行移到下一行,对每一行使用相同的格式描述符。(?)

但在这种情况下,为什么它不起作用

write(*,100)数组
100格式('nIw')

这两种方法有什么不同?

您的
格式100
编写不正确:您试图打印字符串“
nIw
”,而不是数字。看看这个例子:

program print_integer
      implicit none

      character(*), parameter :: fmt_int = '(10I3)'

      integer :: j,array(10) = [(j,j=1,10)]


      write(*,fmt_int) array
      write(*,'(10I3)') array
      write(*,    100) array
      write(*,    200) array   ! WRONG FORMAT


      100 format(10I3)
      200 format('10I3')

end program print_integer

您的
格式100
未正确写入:您试图打印字符串“
nIw
”,而不是数字。看看这个例子:

program print_integer
      implicit none

      character(*), parameter :: fmt_int = '(10I3)'

      integer :: j,array(10) = [(j,j=1,10)]


      write(*,fmt_int) array
      write(*,'(10I3)') array
      write(*,    100) array
      write(*,    200) array   ! WRONG FORMAT


      100 format(10I3)
      200 format('10I3')

end program print_integer

您认为编辑描述符nIw的作用是什么?请显示实际代码以及编译器生成的代码的实际输出。你的两种方法完全相同。在此之前,我将投票决定关闭“不可复制”。@HighPerformanceMark抱歉,那将是
array
。我在复制代码时出错。我在解释编辑描述符是如何以
格式
语句编写时出错@费德里科·佩里尼的回答解决了我的问题。谢谢。请理解,如果您显示实际输入,可能会有人立即发现问题。您认为编辑描述符nIw的作用是什么?请显示实际代码以及编译器生成的代码的实际输出。你的两种方法完全相同。在此之前,我将投票决定关闭“不可复制”。@HighPerformanceMark抱歉,那将是
array
。我在复制代码时出错。我在解释编辑描述符是如何以
格式
语句编写时出错@费德里科·佩里尼的回答解决了我的问题。谢谢。请理解,如果您显示实际输入,可能会有人立即发现问题。谢谢,我太傻了,我把书中的说明解释错了。谢谢,我太傻了,我把书中的说明解释错了。