24小时热门版块排行榜    

北京石油化工学院2026年研究生招生接收调剂公告
查看: 1077  |  回复: 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 的主题更新
普通表情 高级回复 (可上传附件)
最具人气热帖推荐 [查看全部] 作者 回/看 最后发表
[考研] 一志愿北化085600材料专硕275|有文章专利|求调剂 +5 Micky11223 2026-03-25 5/250 2026-03-28 15:02 by 果果妈咪
[考研] 322求调剂 +5 旧吢 2026-03-24 5/250 2026-03-28 13:26 by Iveryant
[考研] 311求调剂 +4 冬十三 2026-03-24 4/200 2026-03-28 13:17 by 唐沐儿
[考研] 材料求调剂 +9 @taotao 2026-03-21 9/450 2026-03-28 13:11 by 唐沐儿
[考研] 086502化学工程342求调剂 +6 阿姨复古不过 2026-03-27 6/300 2026-03-28 07:06 by wangy0907
[考研] 285求调剂 +4 AZMK 2026-03-27 7/350 2026-03-27 20:59 by AZMK
[考研] 22408 359分调剂 +3 Qshers 2026-03-27 3/150 2026-03-27 12:22 by wxiongid
[考研] 一志愿郑大085600,310分求调剂 +5 李潇可 2026-03-26 5/250 2026-03-27 11:14 by 不吃魚的貓
[考研] 材料求调剂 +5 .m.. 2026-03-25 5/250 2026-03-27 11:08 by 不吃魚的貓
[考研] 材料学硕333求调剂 +8 北道巷 2026-03-24 8/400 2026-03-27 10:18 by 我是小康
[考研] 325求调剂 +5 李嘉图·S·路 2026-03-23 5/250 2026-03-27 00:42 by wxiongid
[考研] 机械学硕310分,数一英一,一志愿211本科双非找调剂信息 +3 @357 2026-03-25 3/150 2026-03-26 16:34 by by.MENG
[考研] 281求调剂 +6 Koxui 2026-03-24 7/350 2026-03-26 15:37 by 无际的草原
[考研] 一志愿哈工大,085400,320,求调剂 +4 gdlf9999 2026-03-24 4/200 2026-03-25 23:01 by boxking200
[考研] 0854电子信息求调剂 324 +4 Promise-jyl 2026-03-23 4/200 2026-03-25 11:36 by Sugarlight
[考研] 361求调剂 +3 Glack 2026-03-22 3/150 2026-03-23 22:03 by fuyu_
[考研] 一志愿东华大学化学070300,求调剂 +7 2117205181 2026-03-21 8/400 2026-03-22 22:55 by chixmc
[考研] 280分求调剂 一志愿085802 +4 PUMPT 2026-03-22 7/350 2026-03-22 22:13 by 星空星月
[考研] 275求调剂 +6 shansx 2026-03-22 8/400 2026-03-22 15:27 by barlinike
[考研] 求调剂院校信息 +6 CX 330 2026-03-21 6/300 2026-03-22 15:25 by 无懈可击111
信息提示
请填处理意见