Re: [请益] FORTRAN读档案的问题

楼主: py94g (...)   2012-05-07 21:09:49
谢谢mouseforlove, terryys & All,读取test_000001到test_000012搞定。
想再请教 write(inputname,"(a5,i0.6)")'test_',+i
其中的i0.6是什么意思呢?我在FORTRAN的书暂时还没找到说明。
以下是我写的程式:
Program read
Dimension POINT(3, 10000) ! 设定矩阵维度,3行N列。
! 读test_000001 ...到 test_000012 有12个档
character(len=11) inputname ! 档案有11个字符
10 FORMAT(1X, 3(/X, 3F10.5)) ! 输出的档案格式 Raw data。
do i = 1,12 ! 我要读入12个档案
write(inputname,"(a5,i0.6)")'test_',+i
open(1,file=inputname)
read(1,*) POINT ! 读进
write(*,10) POINT ! 秀在萤幕
write(*,*) "test_",i
enddo
Stop
END
※ 引述《mouseforlove (我是瓜呆)》之铭言:
: 感谢terryys
: 如果希望档名是test_0001-test_0010的格式,下面的code可改为
: do i=1,10
: write(iname,'(a5,i0.4)') 'test_',i
: enddo
: 这样就不需要判别式了!
: 我在处理类似test_01-test20档名的部分,会在循环里面多加判别式
: do i=1,20
: if (i.lt.10) then
: write(iname,'(a6,i1)') 'test_0',i
: elseif (i.ge.10.and.i.lt.100) then
: write(iname,'(a5,i2)') 'test_',i
: endif
: enddo
: 虽然这样写不是很聪明,不过处理数量少的资料还是可以参考一下
: 另外
: : write(inputname,"(a5,i6)")'test_',000000+i
: :C 请问大家,我这一行有写错吗?
: 这个部分出在000000+i,如果i=5计算结果会是5,而不是000005,
: inputname会变成'test_ 5'
作者: terryys (terry)   2012-05-07 21:28:00
i0代表用最少位数写出这个整数 i0.6是前面加0直到6个位

Links booklink

Contact Us: admin [ a t ] ucptt.com