清宵逝水 发表于 2019-4-30 20:21:31

write语句写入文件不会自动换行

本渣渣又来打扰各位了。
我用write语句用同样的隐含循环输出时,如果输出到屏幕上,是会自动换行的(我记得时默认的),但是写入到文件里就不会自动换行了,这样我用其他工具就没法读取了。。
编译器用的是gFortran
        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:55

都会自动换行的。
如果你的 nlon 是37的话。如果你不放心,可以用
'(38(37f8.1,/))'
(我假设 nlat是38)

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

清宵逝水 发表于 2019-4-30 21:36:06

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


还是不行呢,在屏幕上是正常的,到文件里就乱了╮(╯▽╰)╭

fcode 发表于 2019-4-30 21:58:23

怎么个乱了?是你打开文件的编辑器自动换行了吧?

清宵逝水 发表于 2019-4-30 22:13:22

fcode 发表于 2019-4-30 21:58
怎么个乱了?是你打开文件的编辑器自动换行了吧?

自动换行我检查过了。。用记事本打开后,每个数据都是连在一起的。

清宵逝水 发表于 2019-4-30 22:22:05

好像确实编辑器的问题。。我换一个就可以看清了。。
页: [1]
查看完整版本: write语句写入文件不会自动换行