回 帖 发 新 帖 刷新版面

主题:intel visual fortran 读取文件 行数限制

我现在要读取一个文件中的数据,大概有10万行,每行一个数据,但是为何每次读到65536就出错停止了。我用了iostat来判断文件是否到末尾了。

谢谢大家!

回复列表 (共9个回复)

沙发


贴出代码!

板凳


program test
  implicit none
  
  character(len=20):: filename
  integer(kind=4):: nvals=0
  integer(kind=4):: status
  real:: values
  
  write(*,*) 'please enter input file name:'
  read(*,*)  filename
  write(*,1000) filename
  1000 format('','the input file name is:',A)
  open(3,file=filename, status='old', action='read', iostat=status)
  
  openif: if(status==0) then
          
          readloop: do
                    read(3,*,iostat=status) values
                    if(status/=0) exit
                    nvals=nvals+1
                    write(*,1010) nvals, values
                    1010 format('','line',I6,':value=',F10.4)
          end do readloop
  
  
          readif: if(status>0) then
          write(*,1020) nvals+1
          1020 format('0','An error occurred reading line',I6)
          else
          write(*,1030) nvals
          1030 format('0', 'end of file reached. there were',I6,'values in the file.')
          end if readif
          else openif
          write(*,1040) status
          1040 format('','error openning file: iostat=',I6)
  end if openif
  
  close(3)

end

3 楼


你什么编译器?什么操作系统?
我这儿100万行都没问题,你的文件是不是有问题?

the input file name is:1.txt
line    100000:value=         100000.0000
line    200000:value=         200000.0000
line    300000:value=         300000.0000
line    400000:value=         400000.0000
line    500000:value=         500000.0000
line    600000:value=         600000.0000
line    700000:value=         700000.0000
line    800000:value=         800000.0000
line    900000:value=         900000.0000
line   1000000:value=        1000000.0000
0end of file reached. there were   1000000values in the file.

我的运行环境:win7 + intel Visual Fortran 11,每隔100000行输出一次。

4 楼

系统win7,32位。 visual studio 2008 下调用intel visual fortran 11.65

5 楼

确实是我的文件问题。

6 楼

[quote]确实是我的文件问题。[/quote]

I see.

7 楼

方便的話簡單說說自己的文件是因什么導致此問題的然后順便結貼吧:)

8 楼


原因就是在65536这么有意义的那一行上有文字而不是数字,所以出错,而这个有特殊意义的行数使我联想到别的了[em1]

9 楼

楼主是否愿意和我交流matlab与Fortran接口技术:qq373345553,非常感谢

我来回复

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