Fortran Coder

查看: 16064|回复: 9
打印 上一主题 下一主题

[流程控制] 求助&讨论:read的隐式循环转换成do循环就出错

[复制链接]

798

帖子

2

主题

0

精华

大宗师

F 币
3793 元
贡献
2268 点
楼主
发表于 2016-6-14 17:46:18 | 显示全部楼层
1、使用advance='no'不会换行,但是你的数据又分布在多行,读取时依然会报错。
2、具体针对你的问题,没法用你的循环去读取,即使是使用 advance。如果非要去做,也可以,费力不讨好。
3、用隐循环最安全。
4、使用3维数组最省劲儿。
[Fortran] 纯文本查看 复制代码
program test 
character(10) a(3,4,6)
open(10,file='in.txt')
read(10,*) a 
close(10)
k=0
do i=1,6
do j=1,4
k=k+1
write(*,"(i3,2x,3a10)") k,a(:,j,i)
end do 
end do
end 

QQ截图20160616160446.jpg (43.39 KB, 下载次数: 508)

QQ截图20160616160446.jpg

评分

参与人数 2F 币 +22 贡献 +22 收起 理由
fcode + 12 + 12 很给力!李老师辛苦了
一声叹息010 + 10 + 10 很给力!

查看全部评分

回复

使用道具 举报

798

帖子

2

主题

0

精华

大宗师

F 币
3793 元
贡献
2268 点
沙发
发表于 2016-6-15 10:42:48 | 显示全部楼层
每执行一次read或write, 默认都会换行。显循环执行了24次,而隐循环执行1次。
使用advance使之不换行
read(11,*,ADVANCE='NO') x(i,j), y(i,j),z(i,j)
回复

使用道具 举报

798

帖子

2

主题

0

精华

大宗师

F 币
3793 元
贡献
2268 点
板凳
发表于 2016-6-15 15:54:18 | 显示全部楼层
哦,忘了,有了advance就不能用星号,得给定格式。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 极速注册

本版积分规则

捐赠本站|Archiver|关于我们 About Us|小黑屋|Fcode ( 京ICP备18005632-2号 )

GMT+8, 2024-5-3 19:33

Powered by Tencent X3.4

© 2013-2024 Tencent

快速回复 返回顶部 返回列表