亲爱的所有人,我正在编写一个代码,将输出写入名为1.dat,2.dat,.....的多个文件中。这是我的代码,但它提供了一些不寻常的输出。你可以告诉我我的代码有什么问题吗?基本上我无法获得正确的语法来打开多个文件,在它们上面写入并在打开下一个文件之前关闭。谢谢。 我的代码 :
implicit double precision (a-h,o-z),integer(i-n)
dimension b(3300,78805),bb(78805)
character*70,fn
character*80,fnw
nf = 3600 ! NUMBER OF FILES
nj = 360 ! Number of rows in file.
do j = 1, nj
bb(j) = 0.0
end do
c-------!Body program-----------------------------------------------
iout = 0 ! Output Files upto "ns" no.
DO i= 1,nf ! LOOP FOR THE NUMBER OF FILES
if(mod(i,180).eq.0.0) then
open(unit = iout, file = 'formatted')
x = 0.0
do j = 1, nj
bb(j) = sin(x)
write(iout,11) int(x),bb(j)
x = x + 1.0
end do
close(iout)
iout = iout + 1
end if
END DO
11 format(i0,'.dat')
END
答案 0 :(得分:3)
所以有一些事情不能立即清楚你的代码,但我认为最相关的一点是你想在file =
语句中用open
指定文件名,而不是格式化并且使用iout循环遍历单元是有问题的,因为你最终会为stdin和stdout命中系统定义的单位。此外,使用该格式行看起来您已准备好创建文件名,但您实际上从未使用它。
我不确定你在哪里;使用mod测试等,但下面是上面的精简版本,它只是在循环中创建文件:
program manyfiles
implicit none
character(len=70) :: fn
integer, parameter :: numfiles=40
integer, parameter :: outunit=44
integer :: filenum, j
do filenum=1,numfiles
! build filename -- i.dat
write(fn,fmt='(i0,a)') filenum, '.dat'
! open it with a fixed unit number
open(unit=outunit,file=fn, form='formatted')
! write something
write(outunit, *) filenum
! close it
close(outunit)
enddo
end program manyfiles
答案 1 :(得分:0)
就我而言,我希望文件名具有一个像dyn_
这样的前缀
program manyfiles
implicit none
character(len=70) :: filename
integer, parameter :: numfiles=40
integer, parameter :: outunit=44
integer :: filenum, j
do filenum=1,numfiles
write(filename,'("dyn_",i0,".dat")') filenum
open(unit=outunit,file=filename, form='formatted')
write(outunit, *) filenum
close(outunit)
enddo
end program manyfiles