24小时热门版块排行榜    

查看: 12611  |  回复: 157
本帖产生 1 个 程序强帖 ,点击这里进行查看

idgnauh

银虫 (小有名气)


小木虫(金币+0.5):给个红包,谢谢回帖交流
jjdg:欢迎交流 2010-04-06 02:51
Fortran写入的文件怎样进行更改呀?
比如说我想在一个文件的开头说明该文件的数据的个数,而个数是不确定的,需要在执行程序后,在开头写入这个个数。我是了几种方法,比如通过rewind来返回文件头,可是这样整个文件后面存储的数据都被EOF了,不知道该怎么处理。希望各位大牛们能够帮帮我,在这先谢过啦。
81楼2010-04-05 09:00:43
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

asiahu

银虫 (初入文坛)


小木虫(金币+0.5):给个红包,谢谢回帖交流
jjdg:感谢交流 2010-04-06 02:51
作为初学者,对Fortran的感觉是它很强大,但又有一种畏惧学不懂的感觉,期待楼主的资源

[ Last edited by jjdg on 2010-4-6 at 02:50 ]
路曼曼其修远兮,吾将上下而求索
82楼2010-04-05 23:50:33
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

figgers

铜虫 (初入文坛)

★ ★ ★
小木虫(金币+0.5):给个红包,谢谢回帖交流
余泽成(金币+2):谢谢参与应助! 2010-04-10 16:22
引用回帖:
Originally posted by idgnauh at 2010-04-05 09:00:43:
Fortran写入的文件怎样进行更改呀?
比如说我想在一个文件的开头说明该文件的数据的个数,而个数是不确定的,需要在执行程序后,在开头写入这个个数。我是了几种方法,比如通过rewind来返回文件头,可是这样整个文 ...

我遇到过类似问题,好在我的输出数据行数就在几千行,不算多。
我用的是最笨的办法:

写好你要的文件1
......
close(1)

然后开另一个文件2
写开头
重新打开文件1
逐行copy文件1的内容到文件2
read....
write..
close(1)
close(2)

几千行的文件(1行几百个char吧),速度还可以。
可能应该有更好的办法吧

[ Last edited by figgers on 2010-4-10 at 13:23 ]
83楼2010-04-10 13:21:40
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

figgers

铜虫 (初入文坛)

引用回帖:
Originally posted by lnba at 2010-01-14 07:26:36:
fortran里面的整型变量最大只能定义为integer*4,也就是2^31吗?有没有可能定义更大的整型变量?我用integer*8它总是报错...

这个跟编译器有关吧,ivf11.1就支持integer(kind=8)类型的, cvf就不支持.
84楼2010-04-10 13:26:13
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

idgnauh

银虫 (小有名气)


小木虫(金币+0.5):给个红包,谢谢回帖交流
引用回帖:
Originally posted by figgers at 2010-04-10 13:21:40:



我遇到过类似问题,好在我的输出数据行数就在几千行,不算多。
我用的是最笨的办法:

写好你要的文件1
......
close(1)

然后开另一个文件2
写开头
重新打开文件1
逐行copy文件1的内容到文件2
r ...

和figgers想到一块去啦,我最后一是这么弄的。Fortran要是有把文件拼起来的函数就好了。
85楼2010-04-10 14:44:00
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

astringent

铜虫 (著名写手)

怎样把一组数存入数组??


小木虫(金币+0.5):给个红包,谢谢回帖交流
您好,我想请教一个问题,
1       15733
1       18193
1       20251
2       15733
2       20251
3       20824
4       15733
4       16159
4       18193
4       20251
4       20824
5       16159
5       18193
5       20251
5       20824
6       15733
6       20251
6       20824
7       15733
7       20251
7       20824
8       15733
8       16159
8       18193
8       20251
9       18193
9       20251
10        9490
10       16159
10       20251
(1)上面数据存在aaa.txt文件中。对于上面的数据,第二列是步数(step),第三列是每步的可能取值。我想将这些数据读入,并保存在数组H(io,istep)中。io可以取从1到30000但是只有当io取文件中第二列对应的值时H(io,istep)=1,取其他值均为0.也就是说当step=1时,io取15733,18193,20251时H的值为1,取其他值都为0,当step=2时,io取15733,20251时H的值为1,取其他值都为0。我应该怎样实现呢,我想了好久还是没想出来。期待专家的解答。先谢谢了。
86楼2010-12-02 04:59:14
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

maomao1210

金虫 (正式写手)

★ ★ ★
余泽成(金币+3):辛苦了! 2010-12-06 16:32:08
引用回帖:
Originally posted by astringent at 2010-12-02 04:59:14:
您好,我想请教一个问题,
1       15733
1       18193
1       20251
2       15733
2       20251
3       20824
4       15733
4       16159
4       18193
4       20251
4       20824
5      ...

你要表达的意思我基本上明白了,但是有一个疑问哈,呵呵,
如果按照你的意思,那么H[io,istep]将会是一个稀疏的大的矩阵,没多大意思吧?你是不是想表述成这个意思的呀?

我举个例子:下面有两列数:

1  12
1  13
2  14
2  15
2  16
3  17

你是不是想把上述两列数据存储到方阵 H(io,istep)中:


H[io, istep]    1      2      3  [istep]

        1     12    14     17
  
            2     13     15     0

            3      0      16     0

istep共有 3个,istep中,第二个istep的io 最多为三个,所以行数取为 3。
其余不够的用零来补充。

是不是这个意思? 还是非要按照你原来的意思写???
87楼2010-12-02 09:09:33
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

maomao1210

金虫 (正式写手)

★ ★ ★ ★ ★
余泽成(金币+5):谢谢参与应助! 2010-12-06 16:32:26
引用回帖:
Originally posted by astringent at 2010-12-02 04:59:14:
您好,我想请教一个问题,
1       15733
1       18193
1       20251
2       15733
2       20251
3       20824
4       15733
4       16159
4       18193
4       20251
4       20824
5      ...

依据我的理解,写了一个简单的示范程序,可以参考一下,我没有按照你的意思来写,我感觉你或许说的有点问题,呵呵,


      Implicit None
      Integer Max_Parameter,Max_step
      Parameter(Max_Parameter=20,Max_step=20)
      Integer H(Max_Parameter,Max_step)
c        Allocatable H(:,
      Character(Len=60) FileName
        Integer Ihere,Istep,Io,Ibegin
       
c        Write(*,*) 'Please input name of the input files'
       
c        Read(*,*) FileName

c        Open(10,File=Trim(FileName)//'.txt',Status='OlD')
      Open(10,File='aaa.txt',Status='OlD')
      
      Read(10,*) Ihere
      Ibegin=0
      Rewind(10)
14        Read(10,*,End=123) Istep,Io

      If(Istep.eq.Ihere) Then
           Ibegin=Ibegin+1
         H(Ibegin,Istep)=Io
      Else
        Ibegin=1
          Ihere=Istep
          H(Ibegin,Istep)=Io
      EndIF  
      Goto 14
123   Continue
      write(*,*) H(1,1), H(1,2), H(1,3), H(1,4), H(1,5), H(1,6)
        write(*,*) H(2,1), H(2,2), H(2,3), H(2,4), H(2,5), H(2,6)
        write(*,*) H(3,1), H(3,2), H(3,3), H(3,4), H(3,5), H(3,6)
        write(*,*) H(4,1), H(4,2), H(4,3), H(4,4), H(4,5), H(4,6)
        write(*,*) H(5,1), H(5,2), H(5,3), H(5,4), H(5,5), H(5,6)
        End









[ Last edited by maomao1210 on 2010-12-2 at 09:45 ]
88楼2010-12-02 09:42:43
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

maomao1210

金虫 (正式写手)

★ ★ ★
余泽成(金币+3):辛苦了! 2010-12-06 16:35:03
引用回帖:
Originally posted by astringent at 2010-12-02 04:59:14:
您好,我想请教一个问题,
1       15733
1       18193
1       20251
2       15733
2       20251
3       20824
4       15733
4       16159
4       18193
4       20251
4       20824
5      ...

如果我理解错了,你打算严格按照你的意思来写的话,那你可以参考 ‘piduil‘虫子给写的f90示范程序,简单也很实用





counter (istep) : 代表 第istep 步的 Io 的个数

test(counter(istep),istep) :代表 第istep 步中,第counter(istep)中存的 Io 值。

H(test(counter(istep),istep))  : 就是你要求的东西了。


看懂这个程序,切记起 索引数组的用法和含义。

[ Last edited by maomao1210 on 2010-12-2 at 10:00 ]
89楼2010-12-02 09:52:56
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

astringent

铜虫 (著名写手)


小木虫(金币+0.5):给个红包,谢谢回帖交流
引用回帖:
Originally posted by maomao1210 at 2010-12-02 09:42:43:

依据我的理解,写了一个简单的示范程序,可以参考一下,我没有按照你的意思来写,我感觉你或许说的有点问题,呵呵,


      Implicit None
      Integer Max_Parameter,Max_step
      Parameter(Max_Pa ...

太感谢maomao1210的解答了,按照你的方法,我在后面引用数组的时候更方便了。真不愧是专家,多谢。
90楼2010-12-03 03:04:39
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 maomao1210 的主题更新
普通表情 高级回复 (可上传附件)
最具人气热帖推荐 [查看全部] 作者 回/看 最后发表
[基金申请] filecode +7 布布和一二 2026-08-06 10/500 2026-08-06 16:22 by janehuiminli
[基金申请] 听说今天filecode变了 +3 布布和一二 2026-08-06 3/150 2026-08-06 16:22 by yq199112088
[基金申请] filecode +8 等待解的谜 2026-08-06 12/600 2026-08-06 16:11 by janehuiminli
[基金申请] 大家散了吧,后缀研究没有意义,别浪费时间了,过好目前的每一天,不要焦虑 +4 Tide man 2026-08-06 5/250 2026-08-06 16:08 by janehuiminli
[有机交流] 一个有机合成实验室都需要哪些设备? 50+3 kf2781974 2026-07-31 12/600 2026-08-06 15:11 by eddyin
[基金申请] 求各位大神看下 100+6 hpkpkpkp 2026-08-05 33/1650 2026-08-06 14:49 by zhiyanjiang
[教师之家] 咨询面上基金 +4 李长云 2026-07-31 7/350 2026-08-06 11:20 by 李长云
[基金申请] 影响面上的因素 +8 布布和一二 2026-08-05 11/550 2026-08-06 10:41 by 宝贝虫子
[基金申请] 8月时间戳变的,举个手。玩一下,释放压力 +9 archvillain 2026-08-04 11/550 2026-08-05 20:06 by wlwhappy
[基金申请] 面上再次挂了,太难了,躺也躺不了,倦也卷不过,小学校之殇! +22 低垂的野花 2026-07-31 30/1500 2026-08-05 18:03 by 低垂的野花
[基金申请] 好消息?这个有何含义??? +8 Tide man 2026-08-05 10/500 2026-08-05 16:14 by xmuxiaoyu
[考博] 【2027博士申请】纳米药物递送方向 20+3 13586093586 2026-08-03 4/200 2026-08-05 09:59 by lfy8008
[基金申请] 有没有H口的?有收到消息的吗? +3 超级海虾 2026-08-04 3/150 2026-08-04 17:26 by 学教育滴
[论文投稿] 十年后又回来了,论文投稿求助 +3 哈哈114477 2026-08-01 3/150 2026-08-04 15:40 by tegsgjy20
[基金申请] 纯娱乐,不喜欢勿喷 +7 Tide man 2026-08-04 10/500 2026-08-04 15:10 by loufangrui
[基金申请] 面上提前没消息,有中的吗 +14 archvillain 2026-08-02 18/900 2026-08-04 14:42 by archvillain
[基金申请] 娱乐 +4 Tide man 2026-08-03 4/200 2026-08-04 11:51 by wgch518
[基金申请] 什么时候能放榜呀? +3 Jacob678 2026-08-03 3/150 2026-08-03 16:14 by gltch
[基金申请] 2026年国自然面上资助率 +16 布布和一二 2026-07-30 22/1100 2026-08-03 09:20 by gy116024
[基金申请] 你们的时间戳变了吗 +3 archvillain 2026-07-30 4/200 2026-07-30 18:53 by levinzhwen
信息提示
请填处理意见