Fortran Coder

标题: write语句写入文件不会自动换行 [打印本页]

作者: 清宵逝水    时间: 2019-4-30 20:21
标题: write语句写入文件不会自动换行
本渣渣又来打扰各位了。
我用write语句用同样的隐含循环输出时,如果输出到屏幕上,是会自动换行的(我记得时默认的),但是写入到文件里就不会自动换行了,这样我用其他工具就没法读取了。。
编译器用的是gFortran
[Fortran] 纯文本查看 复制代码
        do m = 1, 12
                do i =1,nlat
                ! 对多维数组进行切片处理,形成time-lon/lat的二维数组,然后对时间维进行计算
                        h_mean(m,i,:) = mean(geo_h(:,m,i,:)) !求各月高度气候场
                        h_std(m,i,:)  = dimfun(std_1d, geo_h(:,m,i,:))!对各列进行求标准差
                        h_anomaly(:,m,i,:)  = anomaly(geo_h(:,m,i,:)) !求各年月距平场
                enddo
                write(*,"(37f8.1)") ((h_mean(m,i,j), j=1, nlon),i=1,nlat)
                write(File_h_std,"(37f8.2)") ((h_std(m,i,j), j=1, nlon),i=1,nlat)
        enddo


上面两个write语句,第一个会自动换行,第二个就不换行了。
百度搜了很多方法,包括/,advance='yes',可是这都是默认设置。加了/之后,输出到屏幕上反而多了一行空行,文件里好像还是没变化

作者: fcode    时间: 2019-4-30 20:59
都会自动换行的。
如果你的 nlon 是37的话。如果你不放心,可以用
'(38(37f8.1,/))'
(我假设 nlat是38)

其实你可以考虑把 nlon 和 nlat 换一下位置。这样可以简写为
write(File_h_std,"(38(37f8.1,/))") h_std(m,:,:)

作者: 清宵逝水    时间: 2019-4-30 21:36
fcode 发表于 2019-4-30 20:59
都会自动换行的。
如果你的 nlon 是37的话。如果你不放心,可以用
'(38(37f8.1,/))'

还是不行呢,在屏幕上是正常的,到文件里就乱了╮(╯▽╰)╭
作者: fcode    时间: 2019-4-30 21:58
怎么个乱了?是你打开文件的编辑器自动换行了吧?
作者: 清宵逝水    时间: 2019-4-30 22:13
fcode 发表于 2019-4-30 21:58
怎么个乱了?是你打开文件的编辑器自动换行了吧?

自动换行我检查过了。。用记事本打开后,每个数据都是连在一起的。
作者: 清宵逝水    时间: 2019-4-30 22:22
好像确实编辑器的问题。。我换一个就可以看清了。。




欢迎光临 Fortran Coder (http://bbs.fcode.cn/) Powered by Discuz! X3.2