主题:intel visual fortran 读取文件 行数限制
xiaoff_1982
[专家分:240] 发布于 2010-10-04 13:17:00
我现在要读取一个文件中的数据,大概有10万行,每行一个数据,但是为何每次读到65536就出错停止了。我用了iostat来判断文件是否到末尾了。
谢谢大家!
回复列表 (共9个回复)
沙发
jstzhurj [专家分:4680] 发布于 2010-10-04 13:20:00
贴出代码!
板凳
xiaoff_1982 [专家分:240] 发布于 2010-10-04 13:30:00
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 楼
jstzhurj [专家分:4680] 发布于 2010-10-04 13:48:00
你什么编译器?什么操作系统?
我这儿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 楼
xiaoff_1982 [专家分:240] 发布于 2010-10-04 13:55:00
系统win7,32位。 visual studio 2008 下调用intel visual fortran 11.65
5 楼
xiaoff_1982 [专家分:240] 发布于 2010-10-04 14:05:00
确实是我的文件问题。
6 楼
jstzhurj [专家分:4680] 发布于 2010-10-04 14:15:00
[quote]确实是我的文件问题。[/quote]
I see.
7 楼
cgl_lgs [专家分:21040] 发布于 2010-10-04 15:18:00
方便的話簡單說說自己的文件是因什么導致此問題的然后順便結貼吧:)
8 楼
xiaoff_1982 [专家分:240] 发布于 2010-10-04 16:18:00
原因就是在65536这么有意义的那一行上有文字而不是数字,所以出错,而这个有特殊意义的行数使我联想到别的了[em1]
9 楼
dataminingwang [专家分:0] 发布于 2010-10-05 20:00:00
楼主是否愿意和我交流matlab与Fortran接口技术:qq373345553,非常感谢
我来回复