li913 发表于 2016-6-16 16:05 受小弟一拜! 简洁而高效。 |
li913 发表于 2016-6-15 15:54 能麻烦你跑一遍程序吗。加了格式控制,就又回到错误的循环模式了 |
哦,忘了,有了advance就不能用星号,得给定格式。 |
li913 发表于 2016-6-15 10:42 语法报错 |
每执行一次read或write, 默认都会换行。显循环执行了24次,而隐循环执行1次。 使用advance使之不换行 read(11,*,ADVANCE='NO') x(i,j), y(i,j),z(i,j) |
问题3,还是没解决 |
对于最后的问题1,是字符编码造成的。 如果使用dos utf-8编码的in.txt,gfortran和sf都会得到一样的奇奇怪怪的输出结果out1(2).txt。 如果使用unix文件编码格式,gfortran和sf都能得到正确的输出结果out1.txt 但是,为什么只有前两行出错了,后面的输出都很对啊?! |
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, 下载次数: 729)
捐赠本站|Archiver|关于我们 About Us|小黑屋|Fcode ( 京ICP备18005632-2号 )
GMT+8, 2024-12-25 21:02