Fortran Coder

标题: 关于数值读入读出的问题 [打印本页]

作者: yifanxing1992    时间: 2015-9-23 10:59
标题: 关于数值读入读出的问题
[Fortran] 纯文本查看 复制代码
program main
implicit real*8(a-z)
integer::N,i
real*8::x1(10000),px1(10000),z1(10000),pz1(10000)
real*8::x(10000),px(10000),z(10000),pz(10000)

open(unit=11,file='x.txt')
open(unit=12,file='px.txt')
open(unit=13,file='z.txt')
open(unit=14,file='pz.txt')
open(unit=15,file='cyyb.txt')

N=10000

DO i=1,N
read(11,25)x(i)
x1(i)=x(i)
read(12,25)px(i)
px1(i)=px(i)
read(13,25)z(i)
z1(i)=z(i)
read(11,25)pz(i)
pz1(i)=z(i)
write(15,26)x1(i),px1(i),z1(i),pz1(i)

25 format(1X,F20.11)
26 format(1X,F15.6,6F15.5)
end do

end program

代码如下,但是N=10000时编译上没有问题,但是运行不了,最大的运行只能N=5000可以正常读出数据,其中x,px,z,pz都是10000行的数据,按理说不应该存在越界的问题。那么请问,问题到底出在哪里呢??
作者: pasuka    时间: 2015-9-23 14:01
1、format为啥要定义在循环里面?数据的列数和格式会改变?
2、为啥有open无close?

作者: 楚香饭    时间: 2015-9-23 17:50
求助时,最重要的三个信息:错误提示 > 代码 > 操作系统及编译器版本
作者: yifanxing1992    时间: 2015-9-24 10:45
楚香饭 发表于 2015-9-23 17:50
求助时,最重要的三个信息:错误提示 > 代码 > 操作系统及编译器版本

无编译错误,但是运行不了,操作系统WIN7,编译器IVF+VS2010

作者: yifanxing1992    时间: 2015-9-24 10:46
pasuka 发表于 2015-9-23 14:01
1、format为啥要定义在循环里面?数据的列数和格式会改变?
2、为啥有open无close?
...

FORMAT 可以尝试放在循环外面,但依然不行,数据列数格式不变

有OPEN 无close 是忘写了,不过应该不影响运行
作者: pasuka    时间: 2015-9-24 12:45
yifanxing1992 发表于 2015-9-24 10:46
FORMAT 可以尝试放在循环外面,但依然不行,数据列数格式不变

有OPEN 无close 是忘写了,不过应该不影响 ...

求助时,最重要的三个信息:错误提示 > 代码 > 操作系统及编译器版本
~~~~~~重要的事情说三遍~三遍~三遍
执行读写文件操作有open无close是非常糟糕的陋习,加一个close语句的成本远小于运行出错后再去找bug
作者: fcode    时间: 2015-9-24 13:09
运行不了总有点现象可以供你描述的吧?
作者: yifanxing1992    时间: 2015-9-24 21:13
pasuka 发表于 2015-9-24 12:45
求助时,最重要的三个信息:错误提示 > 代码 > 操作系统及编译器版本
~~~~~~重要的事情说三遍~三遍~三遍
...

恩恩,问题解决了~~谢谢好心大神!
作者: yifanxing1992    时间: 2015-9-24 21:14
fcode 发表于 2015-9-24 13:09
运行不了总有点现象可以供你描述的吧?

问题自己解决了耶,谢谢管理大大
作者: 楚香饭    时间: 2015-9-24 21:31
为什么不说出来让大家借鉴呢?
作者: yifanxing1992    时间: 2015-9-25 10:33
楚香饭 发表于 2015-9-24 21:31
为什么不说出来让大家借鉴呢?

就是很简单的数组取值越界问题,我当时没反应过来。没啥借鉴价值啦。




欢迎光临 Fortran Coder (http://bbs.fcode.cn/) Powered by Discuz! X3.2