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',可是这都是默认设置。加了/之后,输出到屏幕上反而多了一行空行,文件里好像还是没变化
都会自动换行的。
如果你的 nlon 是37的话。如果你不放心,可以用
'(38(37f8.1,/))'
(我假设 nlat是38)
其实你可以考虑把 nlon 和 nlat 换一下位置。这样可以简写为
write(File_h_std,"(38(37f8.1,/))") h_std(m,:,:)
fcode 发表于 2019-4-30 20:59
都会自动换行的。
如果你的 nlon 是37的话。如果你不放心,可以用
'(38(37f8.1,/))'
还是不行呢,在屏幕上是正常的,到文件里就乱了╮(╯▽╰)╭ 怎么个乱了?是你打开文件的编辑器自动换行了吧? fcode 发表于 2019-4-30 21:58
怎么个乱了?是你打开文件的编辑器自动换行了吧?
自动换行我检查过了。。用记事本打开后,每个数据都是连在一起的。 好像确实编辑器的问题。。我换一个就可以看清了。。
页:
[1]