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

楼主: py94g (...)   2012-05-07 20:53:41
谢谢mouseforlove & terryys,我用判别式的方法解决读取test_1到test_12搞定。
以下是我写的程式:
Program read
Dimension POINT(3, 10000) ! 设定矩阵维度,3行N列。
! 读test_1 ...到 test_12 有10个档
character(len=11) inputname ! 档案有6个字符随便设定大于6的数字。
10 FORMAT(1X, 3(/X, 3F10.5)) ! 输出的档案格式 Raw data。
do i = 1,12 ! 我要读入12个档案
if (i.lt.10) then
write(inputname,"(a5,i1)")'test_',+i
elseif (i.ge.10.and.i.lt.100) then
write(inputname,"(a5,i2)")'test_',+i
elseif (i.ge.100.and.i.lt.1000) then
write(inputname,"(a5,i3)")'test_',+i
elseif (i.ge.1000.and.i.lt.10000) then
write(inputname,"(a5,i4)")'test_',+i
elseif (i.ge.10000.and.i.lt.100000) then
write(inputname,"(a5,i5)")'test_',+i
endif
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'

Links booklink

Contact Us: admin [ a t ] ucptt.com