fortran 读取数据后给数组赋值

dat文件是12345678这样的八位数列,数字间有两个空格代码:implicitnoneintegeriintegera(9);open(101,file='123.d... dat文件是 1 2 3 4 5 6 7 8这样的八位数列,数字间有两个空格

代码:
implicit none
integer i
integer a(9);
open(101,file='123.dat');
do i=1,9
read(101,*)a(i)
enddo
end
运行中总是给“read(101,*)a(i);”这句报错,求大神指点!
展开
 我来答
毓诚戴书
2019-06-04 · TA获得超过3.7万个赞
知道大有可为答主
回答量:1.3万
采纳率:30%
帮助的人:648万
展开全部
这是一个基本操作。如果你这么问,我建议你系统的阅读一本教科书。
以下是通用的格式:
open(
12
,
file
=
文件名
)
read(
12
,
*
)
数组
close(
12
)
但具体你的文件是什么样子,是文本文件,还是二进制文件?文本文件是成列的,还是成块的?数据是什么类型的?文本字符串?还是实型数字?整型?
因为这些,具体的读取方法也会有差异。
枫吹草笛
推荐于2016-11-09 · TA获得超过1978个赞
知道小有建树答主
回答量:281
采纳率:75%
帮助的人:160万
展开全部
报错的理由是end of file 吧?
试试下面的代码:
implicit none
integer i
integer a(9);
open(101,file='123.dat');
do i=1,9
read(101,*,end=99)a(i)
enddo
99 stop
end
追问
真的可以了诶!太感谢了,不过要怎么把数组显示出来呢

do j=1,9
write(*,*)a(j)
enddo
这个似乎不太可以诶
另外end=99这个到底起了什么作用呢?为什么写上之后就能跑了?

谢谢大神!
追答
你的数据只有8个,但是循环9次,在第九次的时候就会报错。end=99的意思就是当文档读到最后的时候就跳至 标志为 99 的那一行继续执行。
要把数组显示出来的话就是:
implicit none
integer i
integer a(9);
open(101,file='123.dat');
do i=1,9
read(101,*,end=99)a(i)
write(*,*)a(i)
enddo
99 read(*,*)
end
我猜测你说的不行是因为速度太快了你没看清。
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式