作者sjgau (sjgau)
看板Fortran
标题Re: [问题] 读取资料格式不统一
时间Fri Jul 1 06:07:54 2011
我是 sjgau, 再提供一点 小小的意见。
建议,不要企图 在一个程式里面,
做完所有的事情。
建议,化整为零,各个击破。
先考虑把事情分段,每一个阶段
就变成可以简单考虑和处理的 case.
如果你熟细的工具很多,甚至於可以考虑
不同的阶段,使用不同的工具。
譬如说,我在处理 input file 的时候,
习惯使用 Pascal, C
我在处理 矩阵运算的时候,习惯使用 Fortran,
我在处理图形的输出,不管是 2D/3D,
习惯产生一个script file, 丢给 AutoCAD,
叫 AutoCAD 自动产生出来。
范例如下:
point
x1,y1
line
x1,y1
x2,y2,
.
.
.
circle
xc,yc,
r
arc
x1,y1
x2,y2
x3,y3
text
x1,y1
3.0
0
abc-123
spline
x1,y1
x2,y2
x3,y3
x4,y4
.
.
.
以上,把 2D 的点座标,改成 x1,y1,z1
一样 OK
考虑看看吧
※ 引述《mouseforlove (我是瓜呆)》之铭言:
: 首先感谢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
: : 中间,使用 硬碟档案来 交接资料
: : 你看 如何?
--
e-mail:
[email protected]
我的课程介绍网页:
http://www.csie.ntu.edu.tw/train/teacher_display.php?num=18
AutoCAD 台湾地区菁英讲师获选
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 116.59.36.193
1F:→ blc:只是要是没写笔记,两个月後再回来看就… 07/01 14:28
2F:→ sjgau:程式里面要加上详细 适当的注解,必须有系统流程图 07/01 15:11