0

我正在尝试将一些整数值写入文件。每个整数“列表”必须在同一行。这些值来自代码中的多个位置,因此我没有将所有值放入另一个数组中,而是使用该advance='NO'设置一次输出一个。这是相关的代码片段:

open(unit=120,file=mesh_name,action='WRITE',iostat=io,status='REPLACE',recl=(nsp*9+10))

    write(120,*) nTri,nNode,2,nEdgeBd

    if (o > 1) then

        do t = 1,nTri
            write(120,'(i2,3i9)',advance = 'NO') o,tri(:,t)-1

            en = triEdge(1,t)
            write(120,'(i9)',advance = 'NO') (edgeA(i,en)-1, i=2,o)
            en = triEdge(2,t)
            write(120,'(i9)',advance = 'NO') (edgeA(i,en)-1, i=2,o)
            en = triEdge(2,t)
            write(120,'(i9)',advance = 'NO') (edgeA(i,en)-1, i=2,o)

            if (o > 2) write(120,'(i9)',advance = 'NO') (triInt(i,t)-1, i=1,nIntNode)
            write(120,*)
        end do

当值的数量很少时,它会正确输出为:

   3984        8052           2          84
 2     1443     1368     1431     2034     2035     2035
 2     1358     1261     1290     2037     2038     2038
 2       97       13       14     2040     2041     2041
 2     1291     1272     1273     2043     2044     2044

但是,当每个列表变长时,它会输出如下:

      3984       18054           2          84
 3     1443     1368     1431     2034
     2035     2036
     2037     2036
     2037    14070
 3     1358     1261     1290     2040
     2041     2042
     2043     2042
     2043    14071
 3       97       13       14     2046

如您所见,我尝试使用语句recl中的参数更改默认记录长度。open

我正在使用 gfortran 4.7.3。

所以我的问题是:我不了解fortran如何处理这里的io?

4

0 回答 0