回 帖 发 新 帖 刷新版面

主题:求助:想跳过某些行输出数据,怎么实现

我只想输出所有数据文件,所有描述文件都不要,怎么实现?

列是确定的,行不确定,多少行都有可能

回复列表 (共11个回复)

沙发

read(file_no, *)

板凳


很多类似的问题,找一下。

3 楼

这个方法只能跳过最前面的几行不读。我想输出所遇数字部分的内容,而这个文件那个37行数据就有9行的描述内容,这部分东西我不想要。

4 楼

行?列?贴出文本。

5 楼

我只会跳过前面几行,后面的就不会了,这个是我自己写的。
不知道还要怎么改了
program 123
  implicit none
  character(len=79)  :: filename
  character(len=79)  :: buffer
  integer, parameter :: fileid = 10
  integer :: status = 0
  integer i
  
  write(*,*) "Filename:"
  read (*,"(A79)") filename
  

 
  open(unit=fileid, file=filename,access="sequential", status="old")
  open(unit=20, file='output.txt',status="replace")

  do i=1,11       
     read (fileid,*)
  enddo



    do while(.true.) 
    
      read(unit=fileid, fmt="(A79)", iostat=status ) buffer
      if ( status/=0 ) exit 
      write(20,"(A79)") buffer
      
    end do
 


  stop
end

6 楼


方法有很多,要善于发现文件的特点。

7 楼


举一列:

program readin
  implicit none
  character(len=30)  :: filename
  character(len=128)  :: buffer
  integer, parameter :: fileid = 10
  integer :: i
  
  write(*,*) "Filename:"
  read (*,*) filename
  
  open(unit=fileid, file=filename,access="sequential", status="old")
  open(unit=20, file='output.txt',status="replace")

    do while(.true.) 
    
      read(unit=fileid, fmt='(a)', end=100 ) buffer
      if(ichar(buffer(8:8))>=48.and.ichar(buffer(8:8))<=57.and.index(buffer,'E-')/=0) then
       write(20,'(a)') trim(buffer)
       write(*,'(a)') trim(buffer)
      endif
      
    end do
100 close(fileid) 

  stop
end

8 楼

谢谢。刚刚开始学习fortran,以后还请多多指教

9 楼

我有点不明白,这项一定要判断吗?我把这项删掉貌似已没有问题,只判断字符串的第八个字符是不是在0~9就可以了。
index(buffer,'E-')/=0

10 楼


你一上来不拿具体的东西来问,谁也不好回答,对具体问题,才能有针对性的回答。

我来回复

您尚未登录,请登录后再回复。点此登录或注册