爱气象,爱气象家园! 

气象家园

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博登陆

只需一步, 快速开始

搜索
查看: 5894|回复: 13

[求助] fortran 文件读写

[复制链接]

新浪微博达人勋

发表于 2014-8-25 21:24:08 | 显示全部楼层 |阅读模式

登录后查看更多精彩内容~

您需要 登录 才可以下载或查看,没有帐号?立即注册 新浪微博登陆

x
我有一个二进制文件,里面存储了若干变量,每个变量的类型和大小不一样。我顺序读出了最后一个变量(假设文件的UNIT=10,先open,再一系列read,读出最后一个数组变量READ (UNIT) a),想将其处理(例如avg=a/10)后重新写入该文件的对应位置,请问该如何实现?我用write(UNIT) a,但是这样好像是从文件开头写,结果把原来的文件覆盖了。谢谢!
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2014-8-25 21:30:31 | 显示全部楼层
write的时候设置下rec
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2014-8-25 21:48:46 | 显示全部楼层
lqouc 发表于 2014-8-25 21:30
write的时候设置下rec

直接读取的文件才可以设置rec吧,如果是顺序读取呢?
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2014-8-26 08:19:31 | 显示全部楼层
如果文件不大 可以把所有的文件都读入内存 然后关闭文件,重新以replace的形式打开 再写
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 成长值: 0
发表于 2014-8-26 08:34:27 | 显示全部楼层
打开两个文件,read一个,写一个不就ok了?????
open(1,file="")
open(2,file="")
     read(1)
     write(2)
close(1)
close(2)
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2014-8-26 09:46:17 | 显示全部楼层
言深深 发表于 2014-8-26 08:34
打开两个文件,read一个,写一个不就ok了?????
open(1,file="")
open(2,file="")

深深的办法高明之极@言深深
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2014-8-26 10:42:11 | 显示全部楼层
本帖最后由 letsdo8 于 2014-8-26 10:45 编辑

早期的FORTRAN中,也有rewind,再空读记录到所在位置,再写。
也有用backspace语句的。
http://blog.163.com/jey_df/blog/static/182550161201211624332664/
http://docs.oracle.com/cd/E19957-01/805-4939/6j4m0vn7j/index.html

顺序(sequencial)读取文件,远不如直接读取(direct access)文件的效率高。



密码修改失败请联系微信:mofangbao

新浪微博达人勋

 成长值: 0
发表于 2014-8-26 11:08:07 | 显示全部楼层
lysx 发表于 2014-8-26 09:46
深深的办法高明之极@言深深

为了避免程序写错,造成数据丢失,我都是这么处理的。
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2014-8-26 15:06:11 | 显示全部楼层
言深深 发表于 2014-8-26 11:08
为了避免程序写错,造成数据丢失,我都是这么处理的。

向深深学习!!!
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2014-8-26 20:58:45 | 显示全部楼层
言深深 发表于 2014-8-26 08:34
打开两个文件,read一个,写一个不就ok了?????
open(1,file="")
open(2,file="")

尝试了你的方法 谢谢!
密码修改失败请联系微信:mofangbao
您需要登录后才可以回帖 登录 | 立即注册 新浪微博登陆

本版积分规则

Copyright ©2011-2014 bbs.06climate.com All Rights Reserved.  Powered by Discuz! (京ICP-10201084)

本站信息均由会员发表,不代表气象家园立场,禁止在本站发表与国家法律相抵触言论

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