Io Fortran在两行而不是一行上的输出
我正在运行一个fortran 90程序,它有一个I=1到40的alpha值数组。我尝试使用以下代码将数组输出为5行8行:Io Fortran在两行而不是一行上的输出,io,fortran,Io,Fortran,我正在运行一个fortran 90程序,它有一个I=1到40的alpha值数组。我尝试使用以下代码将数组输出为5行8行: write(4,*) "alpha " write(4,*)alpha(1), alpha(2), alpha(3), alpha(4), alpha(5), alpha(6), alpha(7), alpha(8) write(4,*)alpha(9), alpha(10), alpha(11), alpha(12), alpha(13), alpha(14), alpha
write(4,*) "alpha "
write(4,*)alpha(1), alpha(2), alpha(3), alpha(4), alpha(5), alpha(6), alpha(7), alpha(8)
write(4,*)alpha(9), alpha(10), alpha(11), alpha(12), alpha(13), alpha(14), alpha(15), alpha(16)
write(4,*)alpha(17), alpha(18), alpha(19), alpha(20), alpha(21), alpha(22), alpha(23), alpha(24)
write(4,*)alpha(25), alpha(26), alpha(27), alpha(28), alpha(29), alpha(30), alpha(31), alpha(32)
write(4,*)alpha(33), alpha(34), alpha(35), alpha(36), alpha(37), alpha(38), alpha(39), alpha(40)
其中4是所需的输出文件。但是当我打开输出时,有10行,而不是5行,每个行有5个值,然后3个值交替。你知道我能做些什么来避免这种情况吗
谢谢。使用格式化IO。列表定向IO(即带“*”)设计简单,但未完全指定。不同的编译器将产生不同的输出。尝试以下方法:
write (4, '( 8(2X, ES14.6) )' ) alpha (1:8)
或者使用循环:
do i=1, 33, 8
write (4, '( 8(2X, ES14.6) )' ) alpha (i:i+7)
end do
写(4,“(8(1x,f0.4)))字母
在5行上打印40个数字,因为在Fortran“格式反转”中,当到达格式末尾时,格式会被重新使用,并在新行上打印更多数据
网站上说的是关于格式恢复:
“如果数据传输列表中的项目少于数据描述符,则所有未使用的描述符都将被忽略。”。但是,如果数据传输列表中的项目多于数据描述符,则会发生强制恢复。在这种情况下,FORTRAN 77将前进到下一条记录并重新扫描格式,从最右的左括号开始,包括任何重复计数指示符。然后它重新使用格式的这一部分。如果FORMAT语句中没有内括号,则重复使用整个格式。”