2

亲爱的大家,我正在编写一个代码,将输出写入多个名为 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
4

2 回答 2

4

所以有一些关于你的代码的事情没有立即清楚,但我认为这里最相关的位是你想file =open语句中指定文件名,而不是格式,并且使用 iout 循环单元是有问题的,因为你会最终达到标准输入和标准输出的系统定义单位。此外,使用该格式行,您似乎已准备好创建文件名,但您从未真正使用过它。

我不确定你在哪里;与 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
于 2011-05-27T12:52:54.907 回答
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
于 2019-03-26T14:32:56.357 回答