作者mouseforlove (我是瓜呆)
看板Fortran
标题Re: [问题] 读取资料格式不统一
时间Thu Jun 30 22:09:34 2011
首先感谢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)