Fortran Coder

标题: 有什么好方法读取下面的这类文件,谢谢! [打印本页]

作者: 1230431    时间: 2015-3-21 22:46
标题: 有什么好方法读取下面的这类文件,谢谢!
我有这样一个文件,要把里面的三列数据读到三个数组中,有什么好方法推荐吗?谢谢!


Z      V     q
36    4330   0
36.5  4800   22.5
37    5310   55
37.5  5860   105
38    6450   173.9
38.5  7080   267.2
39    7760   378.3
39.5  8540   501.9
40    9420   638.9
40.5  10250  786.1


作者: fcode    时间: 2015-3-21 22:48
这不 so easy 吗?稍微学一点文件操作都会。
作者: 1230431    时间: 2015-3-21 23:02
fcode 发表于 2015-3-21 22:48
这不 so easy 吗?稍微学一点文件操作都会。

我是想看看有没有其它的方法,及众家之所长嘛,每个人都会有自己的想法的,这是个交流学习的过程

我以前用的都是派生定义一个文件头然后读取文件的
作者: fcode    时间: 2015-3-21 23:04
最简单的方法,就是最高效的方法,也是最好的方法。
作者: 1230431    时间: 2015-3-21 23:12
fcode 发表于 2015-3-21 23:04
最简单的方法,就是最高效的方法,也是最好的方法。

问题是我怎么知道自己现在用的方法就是最简单的呢
作者: 百事可乐    时间: 2015-3-21 23:13
那你把你的代码拿出来,别人才好给你提意见啊。
作者: 1230431    时间: 2015-3-21 23:25
好吧,由于我的表达问题,可能很多人都误解我的意思,我是想请教方法,跟我的不一样的方法,而不是想改进原来的想法。还是谢谢各位愿意花时间来看我的帖子,谢谢!!
作者: fcode    时间: 2015-3-21 23:26
你都不把自己的代码拿出来,别人怎知道与你的不一样?
作者: 百事可乐    时间: 2015-3-22 12:41
很自然,很纯朴,也是最简单高效的方法:

[Fortran] 纯文本查看 复制代码
Integer , parameter :: N = 10
real :: a(N) , b(N) , c(N)
open( 12 , file = '文件名' )
read(12,*)
do i = 1 , N
  read( 12 , * ) a(i) , b(i) , c(i)
end do

作者: likm1110    时间: 2015-3-24 10:20
百事可乐 发表于 2015-3-22 12:41
很自然,很纯朴,也是最简单高效的方法:

[mw_shl_code=fortran,true]Integer , parameter :: N = 10

前面要先跳一行吗?第一行的字母好像不会自动跳过去,还是编译器的问题阿
作者: fcode    时间: 2015-3-24 21:46
likm1110 发表于 2015-3-24 10:20
前面要先跳一行吗?第一行的字母好像不会自动跳过去,还是编译器的问题阿 ...

对,需要跳过第一行。加一句 read(12,*)
作者: pasuka    时间: 2015-3-24 22:05
数据行数有多少?
不超过10w的话,只要自己觉得好就行,效率不会差很多
超过10w的话,建议分批读入,分批处理,或者干脆二进制格式




欢迎光临 Fortran Coder (http://bbs.fcode.cn/) Powered by Discuz! X3.2