24小时热门版块排行榜    

查看: 1422  |  回复: 11
当前主题已经存档。

shadow6wy

铜虫 (初入文坛)

[交流] 【求助】求fortran达人解答fortran读取数据问题

我想用fortran实现我以下的要求
比如说有数据文件data.txt
文件如这样格式
1.1 1.2  1.3  1.4
2.1 2.2  2.3  2.4
3.1 3.2  3.3  3.4
(数据格式整齐)

我想依次读取1.1  1.2  1.3  1.4  2.1  2.2  2.3  2.4  3.1  3.2  3.3  3.4
但每次只要读一个,因为在读取一个数据后还有一个巨大的循环体进行运算
因此简单的说可以表达为
读取1.1赋予a——运行循环体——读取1.2再赋予a——运行循环体……直到所有数据都读完。

另外,我也不希望用数组的方式一次性把数据都读出来,因为这里是一行4个数据,我的运算中可能有1000个或者一万个数据,这样占用内存可能引起溢出。因此想求一个好一点的方法!
谢谢

急求!!!若有人肯帮忙写出程序,愿再出20金币悬赏

[ Last edited by jjdg on 2010-1-21 at 16:27 ]
回复此楼
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

shadow6wy

铜虫 (初入文坛)

★
jjdg(金币+1,VIP+0):鼓励新虫交流! 1-21 16:24
顶起来啊,怎么连个回复的都没有啊?如果嫌少 我再加金币啊
2楼2010-01-21 13:42:55
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

nono2009

超级版主 (文学泰斗)

No gains, no pains.

优秀区长优秀区长优秀区长优秀区长优秀版主

★ ★ ★ ★ ★ ★
余泽成(金币+1,VIP+0):谢谢参与应助! 1-21 14:45
shadow6wy(金币+5,VIP+0):我尝试一下 1-22 09:20
一次读一行4个数据吧,循环运算完了以后,再读下面4个数据......
3楼2010-01-21 14:25:38
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

jjdg

版主 (知名作家)

优秀版主

★ ★ ★ ★ ★
shadow6wy(金币+5,VIP+0):理解了 1-22 09:19
即用即读吧!
努力学习!以正当途径!获得需要的知识!
4楼2010-01-21 16:28:26
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

shadow6wy

铜虫 (初入文坛)

引用回帖:
Originally posted by nono2009 at 2010-1-21 14:25:
一次读一行4个数据吧,循环运算完了以后,再读下面4个数据......

这里只是个例子,我的数据估计有1000个或者10000个,还有许多个文件都要读,所以不能都读到内存里吧,在read一次之后就没有办法再读上一行的文件了吗?
5楼2010-01-21 17:05:15
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

shadow6wy

铜虫 (初入文坛)

引用回帖:
Originally posted by jjdg at 2010-1-21 16:28:
即用即读吧!

版主是什么意思呢?
6楼2010-01-21 17:06:22
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

tjyl

金虫 (正式写手)

1W个双精度的才占多少空间啊,你自己算算吧1W*8字节。你自己用动态数组,自己分配空间就是了。
读数据用real(id,*)  A,B,C,D 用默认格式就行了。不用去指定格式,一次是读一行。
引用回帖:
Originally posted by shadow6wy at 2010-1-20 17:31:
我想用fortran实现我以下的要求
比如说有数据文件data.txt
文件如这样格式
1.1 1.2  1.3  1.4
2.1 2.2  2.3  2.4
3.1 3.2  3.3  3.4
(数据格式整齐)

我想依次读取1.1  1.2  1.3  1.4  2.1  2.2  2.3  2. ...

7楼2010-01-21 18:46:55
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

tjyl

金虫 (正式写手)

★ ★
余泽成(金币+2,VIP+0):谢谢专家,辛苦了! 1-21 18:59
自己看一下rewind的用法吧
引用回帖:
Originally posted by shadow6wy at 2010-1-21 17:05:

这里只是个例子,我的数据估计有1000个或者10000个,还有许多个文件都要读,所以不能都读到内存里吧,在read一次之后就没有办法再读上一行的文件了吗?

8楼2010-01-21 18:48:48
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

liyi3344520

木虫 (正式写手)

★ ★
jjdg(金币+2,VIP+0):辛苦了 1-22 00:32
POSITION=’ASIS’ or ‘REWIND’ or ‘APPEND’   设置文件打开时候的读写位置:
POSITION=’ASIS’   表示文件打开时的读取的位置不特别指定,通常就是在文件的开头。是默认值。
POSITION=’REWIND’      表示文件打开时的读取位置移到文件的开头。
POSITION=’APPEND’     表示文件打开时的读取位置移到文件的结尾。
9楼2010-01-21 19:08:24
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

hakekill

木虫 (小有名气)

★ ★ ★ ★
小木虫(金币+0.5):给个红包,谢谢回帖交流
余泽成(金币+3,VIP+0):谢谢应助,辛苦了! 1-22 11:33
我写了一个,不过对数据文件的格式要求比较严,不过数据格式可以根据具体的情况来做修改,贴出来请大家指正一下:

program main
integer :: cur_num, num_eachline
open(unit = 10, file = "test.dat", action = "read"
num_eachline = 4
cur_num = 1
do
  if ( cur_num == num_eachline ) then
    read(unit = 10, fmt = "(f3.1)", advance = "yes", iostat = ios ) a
  else
    read(unit = 10, fmt = "(f3.1, 1x)", advance = "no", iostat = ios ) a
  end if
  if (ios < 0 ) then
    close( 10 )
    exit
  else
    print *, a
    if ( cur_num < num_eachline ) then
      cur_num = cur_num + 1
    else
      cur_num = 1
    end if
  end if
end do
end program

--test.dat----
1.1 1.2 1.3 1.4
2.1 2.2 2.3 2.4
3.1 3.2 3.3 3.4
4.1 4.2 4.3 4.4

result:
1.1
1.2
1.3
1.4
2.1
2.2
2.3
2.4
3.1
3.2
3.3
3.4
4.1
4.2
4.3
4.4
10楼2010-01-22 10:36:15
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 shadow6wy 的主题更新
普通表情 龙 兔 虎 猫 高级回复 (可上传附件)
最具人气热帖推荐 [查看全部] 作者 回/看 最后发表
[硕博家园] 极限拉扯,如何抉择 +11 Isak0320 2026-10-12 15/750 2026-10-14 21:55 by 猫鱼不是鱼
[基金申请] 申请科研项目纯靠实力能成功吗? 200+5 David1982 2026-10-13 8/400 2026-10-14 21:38 by lhw_GPA4.0
[硕博家园] 中科院海洋所招收海洋材料相关领域博士研究生及研究助理 +3 sujiner 2026-10-08 4/200 2026-10-14 20:40 by qicaiyun
[职场人生] 40+中年人失业后,还能找到好工作吗? +3 xqy2009 2026-10-13 3/150 2026-10-14 20:17 by 43358052
[论文投稿] 二审4个多月了还是Awaiting Reviewer Scores 10+3 纳斯达克ML 2026-10-11 4/200 2026-10-14 17:30 by babero
[有机交流] OpenAI又攻克数学难题了,离AI做有机合成还有多远? +8 wangyl_123 2026-10-10 13/650 2026-10-14 15:12 by zuesli
[基金申请] 入职后第一次管课题组的专利缴费,对账才发现官费比别人多掏了一倍 +6 13108017953 2026-10-08 6/300 2026-10-12 20:07 by w3w3y3
[公派出国] 售一区SCI文章T0P,我:8O.551.O54,科目全,可十急 +5 qR2AdCWTVtkw 2026-10-09 9/450 2026-10-11 22:34 by XQNyDCa1Tk5n
[公派出国] 售SCI一区文章,我:8O5.5.1.O5.4,科目全,可伽急 +5 qR2AdCWTVtkw 2026-10-09 10/500 2026-10-11 22:26 by XQNyDCa1Tk5n
[找工作] 售SCI一区T0P文章,我:8.O55.1.O.54,科目全,可十急 +5 qR2AdCWTVtkw 2026-10-09 8/400 2026-10-11 22:26 by XQNyDCa1Tk5n
[考博] 售SCI一区文章,我:8.O.55.1.O.54,科目齐全,可伽急 +3 qR2AdCWTVtkw 2026-10-09 7/350 2026-10-11 22:11 by XQNyDCa1Tk5n
[教师之家] 售SCI文章,我:8O5.5.1.O.54,科目齐全,可+急 (EPI+-1)(金币-50) +5 qR2AdCWTVtkw 2026-10-09 10/500 2026-10-11 22:06 by XQNyDCa1Tk5n
[教师之家] 售SCI一区T0P文章,我:8.O.55.1.O.5.4,科目全,可+急 (EPI+-1)(金币-50) +5 qR2AdCWTVtkw 2026-10-09 10/500 2026-10-11 14:25 by VOMexwnDzOFZ
[考研] 售SCI文章,我:8O.5.5.1O.54,科目全,可十急 +5 qR2AdCWTVtkw 2026-10-09 8/400 2026-10-11 13:51 by VOMexwnDzOFZ
[硕博家园] 售SCI-T0P文章,我:8O.5.5.1.O.54,科目齐全,可+急 +5 qR2AdCWTVtkw 2026-10-09 8/400 2026-10-11 13:45 by VOMexwnDzOFZ
[找工作] 售SCI一区T0P文章,我:8O.55.1.O.5.4,科目齐全,可+急 +3 qR2AdCWTVtkw 2026-10-09 7/350 2026-10-11 10:54 by VOMexwnDzOFZ
[考博] 招收博士生一名 +3 mandolin 2026-10-10 3/150 2026-10-11 10:21 by 不是山谷!
[公派出国] 售SCI一区T0P文章,我:8O.55.1.O.54,科目全,可伽急 +4 qR2AdCWTVtkw 2026-10-09 4/200 2026-10-11 03:14 by M0zrYVSAnxpE
[有机交流] 各位大佬,路线设计求助 +6 zapen 2026-10-08 8/400 2026-10-10 15:59 by zapen
[有机交流] 我应该选哪条合成路线让实验成功率高一些? +5 jing816y 2026-10-08 9/450 2026-10-10 09:05 by zapen
信息提示
请填处理意见