这是我的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中有类似的东西吗?