使用fortran中的FORMAT在同一行上打印输出

时间:2015-04-05 20:12:41

标签: fortran fortran90 gfortran

这是我的fortran 90计划

PROGRAM T2
IMPLICIT NONE

CHARACTER (len=20):: str = 'Testfile.dat'
INTEGER :: i,j

OPEN(UNIT=1, FILE=str, STATUS='REPLACE',ACTION='WRITE')
    DO i=0,9,1
        DO j=0,9,1
            WRITE(1,100) i+j
            100 FORMAT ('+',I10.1)
        END DO
            WRITE (1,110)
            110 FORMAT ('',/)
    END DO

END PROGRAM

我希望输出为

0 1 2 ...
1 2 3 ...

但是我得到了不同格式的输出,其中每个数字都写在单独的行上。罪魁祸首是FORMAT陈述。如果我做出这些改变:

WRITE(1,100,ADVANCE='NO') i+j
100 FORMAT (1X,I10.1)

我得到了我想要的东西。但是,根据查普曼关于Fortran的书,+是格式修饰符,它继续保持同一条线。但是我没有使用它获得输出。任何人都可以解释我为什么会这样?此外,本书在FORMAT语句中强调了第一个字符。即使我写100 FORMAT (1X,I10.1)1X似乎也没有确定间距的影响。谁能告诉我们这里发生了什么?

另外,有没有办法在程序中决定输出i+j的'自动宽度'?或者我是否必须编写FORMAT语句来指定宽度?我的意思是,我们不在C ++中编写任何宽度分隔符,它会自动决定宽度并放置输出。在fortran中有类似的东西吗?

0 个答案:

没有答案