我正在尝试将一些整数值写入文件。每个整数“列表”必须在同一行。这些值来自代码中的多个位置,因此我没有将所有值放入另一个数组中,而是使用该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?