看板Programming
标 题Re: [问题] Fortran的file存取问题
发信站=?big5?B?SElTRFQgrbes6qzsp97F58PSprOtraS9pX (Thu Mar 13 02:11:12 2008)
转信站ptt!ctu-reader!ctu-gate!news.nctu!news.ntust!news.ntu!feeder.seed.net.
在各语言下都一样。所以这句话没意义。
> > 不过我想说这种修改档案的功能感觉应该很重要呀
长度相同的替代用 binary 直接写入那个位置,长度不同的替代。
长度不同的替代,在有 seek 支援的编译器,设定到替换点,把後面的内容全部读出来,
写入替换内容,输出後半段。
IVF 有 binary 跟 Formatted ,看你是哪种,就依照上面的原则去处理。
IVF 的 binary 非 fortran 200x 的规格,请依线上手册说明存取。
==> 本文由 "㊣金大支大寿,六六大支! <[email protected]>"
> 於 news:4Z28L8%24qP8%40bbs.kkcity.com.tw 发表
> ※ 引述《[email protected]》之铭言:
> > ※ 引述《[email protected] (㊣金大支大寿,六六大支!)》之铭言:
> > : 1)先把改变前的部份抄进去
> > : 2)写入改变的部份
> > : 3)再把改变之後的部份抄进去
> > : FORTRAN的随机档使用好像是没有标准,你可以找找看你用的compiler有没有支援
> > : 但是一般而言,上面那样还比较直接。
> > :
> > 恩恩 感谢
> > 我是用intel fortran compiler
> > 我也有在想说是否要先把档案後面的资料读入一个array
> > 然後等要取代资料的部分写入後
> > 再把贮存在array里的资料丢回去
> > 不过我想说这种修改档案的功能感觉应该很重要呀
> > Fortran的write功能怎会没有选项支援@@
> > 不过搜寻半天又没查到相关功能Orz
> > (还是电脑资料的贮存特性只能如此作我不了解!)
> 因为一般而言open开档案都是开成「循序档」
> 对FORTRAN最习惯的用途(计算)而言
> 出结果只需要出一次,下次再出又是别的档案,很自然
> 如果是每次要改的你就要改用「随机档」
> 刚才试了一下,FORTRAN其实是很轻松就支援随机档了
> 关键字是direct access file
> 所谓随机档在写入的时候指定记录编号,就可以写入档案中任意位置
> 每一笔记录必须要等长(当然!否则怎麽知道第几笔记录放在哪里)
> 有多长则是在open的时候指定,例如这样
> open (unit=1, name="rec.lst", access="direct", recl=20,
> C form="formatted")
> 而读写则是
> read (unit=1, rec=i, fmt="(I9,X,I10)") m, n
> write(unit=1, rec=i, fmt="(I9,X,I10)") m, 3**m
> 但是这用起来也并不是多麽美妙
> 每一笔记录要等长,第一个问题就是每笔後面不会自动换行,这你用了就知道了
> 因为这种档案格式就是存资料用,不是打算给人看的
> 第二点,如果是一大堆固定格式的资料,例如对应不同时间的数据
> 你找到其中某一笔,然後改写整笔,这还算简单
> 如果是一篇文章,要改写其中一两段,甚至是一两句
> 那我看你开个阵列来存,在阵列里面改好,再开个新档写回去,删掉旧档
> 这样还比较简单
> 或者就像我讲的,同时开两个档案,一读一写,
> 分出新旧部份,没有修改的部份直接抄,到了有改的部份再写进去
> 当然可以用一些比较复杂的方法
> 比如说,设recl=1
> 如果你有兴趣可以试试看,我是没有试过…
>
--
风禹科技验证有限公司 ASP.NET Web News Reader 0.2.7 UTF-8 Beta
网站地图
http://tlcheng.twbbs.org/wwwmap.htm
流域防洪/区域水资源/徐昇网/玫瑰图/语音通讯 文章与程式
Basic/Fortran/Windows API/.Net/辅助说明档 原始码、文章与讨论
微软程式设计、系统管理使用新技术论坛讨论区,网友回覆後即时简讯、电子邮件通知:
MSDN:
http://forums.microsoft.com/msdn-cht/default.aspx?siteid=14
TechNet:
http://forums.microsoft.com/technet-cht/default.aspx?siteid=23
--
ASPNET News Reader
http://tlcheng.twbbs.org/News/Reader.aspx
RSS 2.0
http://tlcheng.twbbs.org/News/rss2.aspx?Action=List&Newsgroup=tw.bbs.comp.language