【发布时间】:2016-07-25 22:53:44
【问题描述】:
我想从 Fortran 中的某些文件中读取数据,当文件名具有规则顺序时,我可以这样做。但现在它不规则了,尽管它们都有相同的前缀,例如:Fix001、Fix002、Fix023、Fix432、...
我希望程序从用户那里获取前缀并循环打开所有文件,读取数据并将它们写入单个文件。 任何的想法 ? 谢谢。
PROGRAM Output
Implicit none
Integer ::n=5 !number of files
Integer ::nn=50 !number of rows in each file
Integer ::i,j
Real,Dimension(:),Allocatable::t,x,y,z
Character(len=12)::TD
Open(11,file='outputX.txt')
Allocate (t(1000),x(1000),y(1000),z(1000))
j=0
Do i=1,n
Write(TD,10)i
Write(*,*)TD
Open(1,file=TD)
Read(1,*)(t(j),x(j),j=1,nn)
Write(11,20)(x(j),j=1,nn)
j=j+1
Enddo
10 Format('100',i3.3,'')
20 Format(<nn>E25.8E3)
Deallocate(x,y,z,t)
END PROGRAM Output
【问题讨论】:
-
仅供参考
integer :: n = 5不等于integer :: n; n = 5而是integer, save :: n = 5。这让很多 Fortran 新手感到惊讶。 -
承认,我不知道,但现在它仍然有效;)
-
您在该程序中看到的具体问题是什么?
-
你真的不需要所有这些语言标签,特别是你的代码不是 Fortran 77。如果你有一个特定的语言版本需要定位,你可以明确提及。甚至 Fortran 95 也被淘汰了。
-
这没有问题并且可以工作,但是直到文件编号按顺序排列,我的意思是例如它读取文件:Fix001、Fix002、Fix003...但是如果这个顺序破坏了某些程序将关闭。
标签: fortran fortran90 gfortran fortran77 fortran95