Re: [問題] Fortran的file存取問題

看板Programming作者時間17年前 (2008/03/12 18:32), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串5/5 (看更多)
在各語言下都一樣。所以這句話沒意義。 > > 不過我想說這種修改檔案的功能感覺應該很重要呀 長度相同的替代用 binary 直接寫入那個位置,長度不同的替代。 長度不同的替代,在有 seek 支援的編譯器,設定到替換點,把後面的內容全部讀出來, 寫入替換內容,輸出後半段。 IVF 有 binary 跟 Formatted ,看你是哪種,就依照上面的原則去處理。 IVF 的 binary 非 fortran 200x 的規格,請依線上手冊說明存取。 ==> 本文由 "㊣金大支大壽,六六大支! <journeyman@kkcity.com.tw>" > 於 news:4Z28L8%24qP8%40bbs.kkcity.com.tw 發表 > ※ 引述《sunseeker.bbs@ptt.cc》之銘言: > > ※ 引述《journeyman@kkcity.com.tw (㊣金大支大壽,六六大支!)》之銘言: > > : 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
文章代碼(AID): #17rx4Y00 (Programming)
文章代碼(AID): #17rx4Y00 (Programming)