Fortran Coder

查看: 79|回复: 5

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

[复制链接]

9

帖子

3

主题

0

精华

入门

F 币
47 元
贡献
26 点
发表于 2019-4-30 20:21:31 | 显示全部楼层 |阅读模式
本渣渣又来打扰各位了。
我用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',可是这都是默认设置。加了/之后,输出到屏幕上反而多了一行空行,文件里好像还是没变化
回复

使用道具 举报

1386

帖子

12

主题

5

精华

论坛跑堂

Fcode跑堂伙计

F 币
547 元
贡献
443 点

新人勋章贡献勋章管理勋章帅哥勋章爱心勋章规矩勋章元老勋章水王勋章

发表于 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,:,:)

9

帖子

3

主题

0

精华

入门

F 币
47 元
贡献
26 点
 楼主| 发表于 2019-4-30 21:36:06 | 显示全部楼层
fcode 发表于 2019-4-30 20:59
都会自动换行的。
如果你的 nlon 是37的话。如果你不放心,可以用
'(38(37f8.1,/))'

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

1386

帖子

12

主题

5

精华

论坛跑堂

Fcode跑堂伙计

F 币
547 元
贡献
443 点

新人勋章贡献勋章管理勋章帅哥勋章爱心勋章规矩勋章元老勋章水王勋章

发表于 2019-4-30 21:58:23 | 显示全部楼层
怎么个乱了?是你打开文件的编辑器自动换行了吧?

9

帖子

3

主题

0

精华

入门

F 币
47 元
贡献
26 点
 楼主| 发表于 2019-4-30 22:13:22 | 显示全部楼层
fcode 发表于 2019-4-30 21:58
怎么个乱了?是你打开文件的编辑器自动换行了吧?

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

9

帖子

3

主题

0

精华

入门

F 币
47 元
贡献
26 点
 楼主| 发表于 2019-4-30 22:22:05 | 显示全部楼层
好像确实编辑器的问题。。我换一个就可以看清了。。
您需要登录后才可以回帖 登录 | 极速注册

本版积分规则

QQ|捐赠本站|Archiver|关于我们 About Us|群聊|Fcode

GMT+8, 2019-5-25 16:18

Powered by Discuz! X3.2

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表