24小时热门版块排行榜    

查看: 13163  |  回复: 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 的主题更新
普通表情 龙 兔 虎 猫 高级回复 (可上传附件)
最具人气热帖推荐 [查看全部] 作者 回/看 最后发表
[职场人生] 40+中年人失业后,还能找到好工作吗? +4 xqy2009 2026-10-13 4/200 2026-10-15 08:16 by xli1984
[硕博家园] 中科院海洋所招收海洋材料相关领域博士研究生及研究助理 +3 sujiner 2026-10-08 4/200 2026-10-14 20:40 by qicaiyun
[论文投稿] 二审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
[教师之家] 课题组会帮你通过考核么? +4 好运来~9527 2026-10-10 7/350 2026-10-13 08:41 by xli1984
[基金申请] 入职后第一次管课题组的专利缴费,对账才发现官费比别人多掏了一倍 +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一区T0P文章,我:8.O55.1.O.54,科目全,可十急 +5 qR2AdCWTVtkw 2026-10-09 8/400 2026-10-11 22:26 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 9/450 2026-10-11 22:15 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文章,我:8O.5.5.1O.54,科目全,可十急 (EPI+-1)(金币-50) +4 qR2AdCWTVtkw 2026-10-09 7/350 2026-10-11 14:05 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,科目齐全,可+急 +4 qR2AdCWTVtkw 2026-10-09 7/350 2026-10-11 10:34 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
信息提示
请填处理意见