Re: [問題] 讀取資料格式不統一

看板Fortran作者 (我是瓜呆)時間13年前 (2011/06/30 22:09), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串4/6 (看更多)
首先感謝sjgau大的建議,先使用字串來做處理確實幫我解決了問題 我遇到的資料,除了最前面要讀的實數資料位數不同外,後面還包含了"tab"、":"、"/" 等符號,因此無法給予固定格式來讀 所以我先將資料讀取為一長字串,假設字串長度n,讀取字串為a,然後做以下處理 do i=1,n read(a(i:i),'(a1)') w !w為長度為1的character if (w.eq.'/'.or.w.eq.':') then a(i:i)=' ' !用空格取代 endif enddo 這樣原先字串 3.7 2011/05/01 會變為 3.7 2011 05 01 便可以直接使用自由格式讀取資料 read(a,*) var,yyyy,mm,dd 但在這裡要注意的是,如果是處理單筆的資料,可以直接用read讀處理後的字串a 但是當處理的資料筆數非常多,使用迴圈重複讀取時,直接讀取a會出現我還沒搞清楚的 問題,因此我的作法是先將所有處理好的a寫入到一個暫存的檔案,再重新讀取這個暫存 的檔案,便不會出現問題,但是這對於資料數很多的時候不是那麼理想,所以還要看各位 先進是否有什麼好的建議。 再次感謝sjgau寶貴的意見。 ※ 引述《sjgau (sjgau)》之銘言: : 先使用 字串的方式讀進來, : 自己寫副程式 ,使用空格來 切開字串, : 再來處理,把字串轉換成 浮點數, : 把字串轉換成 時間的日期天數。 : 好像,以上的工作,使用 C++ 會很容易。 : 建議, : 讀寫資料檔案,使用 C++ 來處理, : 計算的部份,使用 Fortran : 中間,使用 硬碟檔案來 交接資料 : 你看 如何? : ※ 引述《mouseforlove (我是瓜呆)》之銘言: : : 各位先進好,目前我遇到一個問題如下 : : 3.7 2011/05/01 : : 11.2 2011/05/02 : : 5 2011/05/03 : : 由於最前面的資料格式可能為一至三格,導致讀取時無法給予統一格式 : : 想請問是否有什麼解決方法 : : 感謝 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.115.36.198 ※ 編輯: mouseforlove 來自: 140.115.36.198 (06/30 22:10)
文章代碼(AID): #1E38EXyt (Fortran)
討論串 (同標題文章)
文章代碼(AID): #1E38EXyt (Fortran)