找回密码
 注册
Simdroid-非首页
查看: 328|回复: 7

[3. Fortran] 读入文件时怎么让程序每5行跳过一条记录呢?(fortran)

[复制链接]
发表于 2005-5-14 18:43:47 | 显示全部楼层 |阅读模式 来自 湖南长沙
请教
输入文件每2行就有一行不用的数据(一些无用的字母)
我怎么让程序不读这一行
而直接去读第4行呢?
比如
输入文件(1.dat为:
1 1 1
2 2 2
tadfaf
3 3 3
我想输出文件(2.dat)为
1 1 1
2 2 2
3 3 3
 楼主| 发表于 2005-5-14 19:18:00 | 显示全部楼层 来自 湖南长沙

Re:读入文件时怎么让程序每5行跳过一条记录呢?(fortran)

Simdroid开发平台
我程序是写出来了(第三行读入到一个字符变量里面去),但是相当麻烦。
有没有办法直接跳过这些行,根本不读的办法哦

program test 1   

        character *2 str1
        open(unit=3,file='1.dat',status='old')
         
        open(unit=2,file='2.dat',status='new')
        d=0
20     read(3,*)A,B,c
        d=d+1
        if(mod(d,2).eq.0) then
        write(2,*)A,B,c
        read(3,100)str1
        goto 20
        else
       write(2,*)A,B,c
      
      
       goto 20
       end if
30     close(3)
       close(2)
100     format(A)
       end
 楼主| 发表于 2005-5-14 19:20:47 | 显示全部楼层 来自 湖南长沙

Re:读入文件时怎么让程序每5行跳过一条记录呢?(fortran)

不知道怎么回事 全从第一列开始了
红色的表示语句标号
发表于 2005-5-14 20:36:26 | 显示全部楼层 来自 江苏南京

Re:读入文件时怎么让程序每5行跳过一条记录呢?(fortran)

楼主是否是不想要第三行,若是,则可在读第二行时用“/”跳过第三行,很久没用了,一时想不出比此更好的办法,下面是我试改的程序,供参考:
          program test 1
          DIMENSION MA(3,3)
          open(unit=3,file='1.dat')
          open(unit=2,file='2.dat')
          DO 1,I=1,3
          IF(MOD(I,2).EQ.0)THEN
           read(3,20)(MA(I,J),J=1,3)
         ELSE
          READ(3,21)(MA(I,J),J=1,3)
        END IF
1      CONTINUE
20     FORMAT(3I/)
21     FORMAT(3I)
         DO 2,I=1,3
2       WRITE(2,*)(MA(I,J),J=1,3)
         END

评分

1

查看全部评分

发表于 2005-5-14 20:57:09 | 显示全部楼层 来自 江苏南京

Re:读入文件时怎么让程序每5行跳过一条记录呢?(fortran)

或者改成下面简单的程序,但要改一下1.dat,因为要将FORMAT执行完,供销参考:
program test 1
DIMENSION MA(3,4)
open(unit=3,file='1.dat')
open(unit=2,file='2.dat')
read(3,20)MA
20   FORMAT(3i/3i/)
DO 2,I=1,3
2    WRITE(2,*)(MA(j,i),J=1,3)
END
1.dat改为:
1,1,1
2,2,2
tadfaf
3,3,3
4,4,4
aaaaa
 楼主| 发表于 2005-5-15 00:49:00 | 显示全部楼层 来自 湖南长沙

Re:读入文件时怎么让程序每5行跳过一条记录呢?(fortran)

好的
我编译看看
多谢啊

奇怪,怎么运行以后2.dat里面没内容啊(用的是你的第一个程序)
发表于 2005-5-15 10:08:46 | 显示全部楼层 来自 江苏南京

Re:读入文件时怎么让程序每5行跳过一条记录呢?(fortran)

我的有啊
2.dat
           1           1           1
           2           2           2
           3           3           3
发表于 2005-5-17 17:01:29 | 显示全部楼层 来自 江苏南京

Re:读入文件时怎么让程序每5行跳过一条记录呢?(fortran)

这样也可以。而且简单:

program test 1
open(unit=3,file='1.dat',status='old')
open(unit=2,file='2.dat',status='new')
20 read(3,*)A,B,c
write(2,*)A,B,C
read(3,*)A,B,C
write(2,*)A,B,C
read(3,*)
if(.not.eof(3)) goto 20
close(3)
close(2)
end

不妨试试。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Simapps系列直播

Archiver|小黑屋|联系我们|仿真互动网 ( 京ICP备15048925号-7 )

GMT+8, 2024-11-2 01:27 , Processed in 0.039151 second(s), 18 queries , Gzip On, MemCache On.

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表