24小时热门版块排行榜    

查看: 1788  |  回复: 12
本帖产生 2 个 程序强帖 ,点击这里进行查看

77585218358

金虫 (正式写手)


[交流] 【求助】求高手关于Fortran数据读写的问题。【已完结】

现在有如下的数据,我想把C1 和C2 行对应的三个数值读写出来,如何操作?小弟fortran很菜,跪求高手解答。
HT         -1.895  10.573  85.302
C1         -1.046  10.149  85.861
C2         -0.291  11.243  86.620
H1C       -0.394   9.635  85.137
H2C       -1.447   9.397  86.558
H1C       -0.994  11.727  87.322
H2C        0.028  12.029  85.913
C1          0.934  10.743  87.400
C2          2.100  10.268  86.522
H1C        0.630   9.929  88.082
H2C        1.300  11.563  88.045
H1C        2.365  11.070  85.810
H2C        1.783   9.403  85.915
C1          3.336   9.882  87.343
C2          4.495   9.311  86.511
H1C        3.042   9.128  88.095
H2C        3.686  10.760  87.914
H1C        4.139   8.415  85.976
H2C        5.287   8.958  87.196
C1          5.113  10.268  85.478
C2          5.692  11.575  86.043
H1C        4.357  10.510  84.711
H2C        5.918   9.729  84.946
H1C        4.883  12.193  86.469
H2C        6.116  12.158  85.205
C1          6.782  11.365  87.101
C2          7.480  12.671  87.503
H1C        7.529  10.654  86.706
H2C        6.344  10.894  87.999
H1C        6.719  13.397  87.840
H2C        7.954  13.116  86.609
C1          8.536  12.510  88.609
C2          9.640  11.481  88.312
H1C        8.028  12.229  89.550

[ Last edited by 余泽成 on 2010-12-6 at 15:16 ]
回复此楼

» 猜你喜欢

» 本主题相关价值贴推荐,对您同样有帮助:

» 抢金币啦!回帖就可以得到:

查看全部散金贴

已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

ykwang

金虫 (正式写手)



77585218358(金币+10): 2010-12-01 14:32:50
余泽成(金币+1):谢谢参与应助! 2010-12-06 15:15:50
zyj8119(程序强帖+1): 2010-12-14 18:04:03
你需要的程序片段如下:

          Dimension C1(3,100),C2(3,100)
          Character  CHS*80
          J1=0
          J2=0
10       READ(10,'(A)',END=20)CHS
          IF(CHS(1:2).EQ.'C1')THEN
               J1=J1+1
               IF(J1.GT.100)STOP 'Error Message .......'
               READ(CHS(3:80),*)(C1(I,J1),I=1.3)
           ENDIF
           IF(CHS(1:2).EQ.'C2')THEN
               J2=J2+1
               IF(J2.GT.100)STOP 'Error Message .......'
               READ(CHS(3:80),*)(C2(I,J2),I=1.3)
           ENDIF
           GOTO 10
20       CONTINUE
2楼2010-12-01 10:30:05
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

77585218358(金币+10): 2010-12-01 14:32:59
余泽成(金币+1):谢谢参与应助! 2010-12-06 15:15:59
zyj8119(程序强帖+1): 2010-12-14 18:03:44
一个简单的实现
CODE:
C234567
      PROGRAM C1C2
      CHARACTER*80 LINE
      OPEN(7,FILE = 'A.TXT', STATUS='OLD')
      OPEN(8,FILE = 'B.TXT', STATUS='NEW')
5     READ(7,'(A)', END = 10) LINE
      IF( INDEX(LINE, 'C1') .NE. 0 .OR. INDEX(LINE, 'C2') .NE. 0)
     &  WRITE(8, '(A)') LINE
      GOTO 5
10    CONTINUE
      END

3楼2010-12-01 10:37:01
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

piduil

铜虫 (初入文坛)



77585218358(金币+3): 2010-12-01 14:33:14
77585218358(金币+3): 2010-12-01 14:35:45
余泽成(金币+1):谢谢参与应助! 2010-12-06 15:16:10
ykwang的程序估计是楼主想要的
但文件10在你的程序中没有定义,fortran菜鸟会搞不定的。
此外,如果输入文件中有C1C打头之类的行,会出错的。
4楼2010-12-01 13:10:05
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

77585218358

金虫 (正式写手)


引用回帖:
Originally posted by piduil at 2010-12-01 13:10:05:
ykwang的程序估计是楼主想要的
但文件10在你的程序中没有定义,fortran菜鸟会搞不定的。
此外,如果输入文件中有C1C打头之类的行,会出错的。

你的意思是应该定义打开数据文件的通道10,是不是?
5楼2010-12-01 14:38:04
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
引用回帖:
Originally posted by 77585218358 at 2010-12-01 14:38:04:

你的意思是应该定义打开数据文件的通道10,是不是?

就象我的那个那样,open(10,.....)
6楼2010-12-01 14:54:17
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

piduil

铜虫 (初入文坛)


为什么非要用fortran来干这个事情呢?
我觉得干这个并不是fortran的特长,把你的需求说完整了,也许有更好的解决方案。
7楼2010-12-01 15:31:47
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
Fortran 干这种事情还是绰绰有余的,呵呵……
8楼2010-12-01 15:37:46
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

77585218358

金虫 (正式写手)


引用回帖:
Originally posted by piduil at 2010-12-01 15:31:47:
为什么非要用fortran来干这个事情呢?
我觉得干这个并不是fortran的特长,把你的需求说完整了,也许有更好的解决方案。

已经解决了!
9楼2010-12-02 14:39:15
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

kathy2008

木虫 (正式写手)



小木虫(金币+0.5):给个红包,谢谢回帖
引用回帖:
Originally posted by snoopyzhao at 2010-12-01 10:37:01:
一个简单的实现

[code]
C234567
      PROGRAM C1C2
      CHARACTER*80 LINE
      OPEN(7,FILE = 'A.TXT', STATUS='OLD')
      OPEN(8,FILE = 'B.TXT', STATUS='NEW')
5     READ(7,'(A)', END = 10) ...

版主你好,我试了一下你这一个程序,用gfortran,提示的错误是
In file bbs3.f90:6

      IF( INDEX(LINE, 'C1') .NE. 0 .OR. INDEX(LINE, 'C2') .NE. 0 )
                                                                 1
Error: Unclassifiable statement in IF-clause at (1)

请指点。谢谢。
10楼2011-05-12 09:58:10
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
★ ★ ★
小木虫(金币+0.5):给个红包,谢谢回帖
余泽成(金币+2): 谢谢参与应助! 2011-05-12 18:53:25
引用回帖:
Originally posted by kathy2008 at 2011-05-12 09:58:10:
版主你好,我试了一下你这一个程序,用gfortran,提示的错误是
In file bbs3.f90:6

      IF( INDEX(LINE, 'C1') .NE. 0 .OR. INDEX(LINE, 'C2') .NE. 0 )
                                           ...

我这里的是个 Fortran 77 的程序,续行符在前,你用 Fortran 90 的话,得把续行符放在上一行的后面吧……
11楼2011-05-12 10:09:40
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

kathy2008

木虫 (正式写手)



小木虫(金币+0.5):给个红包,谢谢回帖
引用回帖:
Originally posted by snoopyzhao at 2011-05-12 10:09:40:
我这里的是个 Fortran 77 的程序,续行符在前,你用 Fortran 90 的话,得把续行符放在上一行的后面吧……

多谢版主。已解决。
12楼2011-05-12 10:16:07
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
★ ★ ★
小木虫(金币+0.5):给个红包,谢谢回帖
余泽成(金币+2): 其实真的想让你加入我们版主管理团队,不知专家是不是有这个意愿! 2011-05-12 18:54:11
引用回帖:
Originally posted by kathy2008 at 2011-05-12 10:16:07:
多谢版主。已解决。

俺不是版主,呵呵……
13楼2011-05-12 10:16:38
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 77585218358 的主题更新
普通表情 高级回复(可上传附件)
信息提示
请填处理意见